Я собрал минимально жизнеспособный просмотрщик html с Java. Единственной проблемой, с которой я столкнулся, является привязка размера компонента браузера к размеру JFrame. Я знаю, что, вероятно, я пропустил только одну строку кода, но сегодня мой google fu слишком слаб. См. Ниже полный код браузера. В настоящее время браузер, кажется, установлен на расстоянии около 300 пикселей независимо от размера кадра.Сделать растяжку сцены javafx с рамкой контейнера
Спасибо, Лаури
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javax.swing.*;
public class testBrowser {
/* Start swing thread */
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
showBrowser("http://www.stackoverflow.com");
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public static void showBrowser(final String url) {
// This method is invoked on Swing thread
JFrame frame = new JFrame("FX");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);
frame.setVisible(true);
frame.pack();
Platform.runLater(new Runnable() { // this will run initFX as JavaFX-Thread
@Override
public void run() {
initFX(fxPanel, url);
}
});
}
/* Creates a WebView and fires up google.com */
private static void initFX(final JFXPanel fxPanel, String url) {
Group group = new Group();
final Scene scene = new Scene(group);
WebView webView = new WebView();
group.getChildren().add(webView);
// Obtain the webEngine to navigate
WebEngine webEngine = webView.getEngine();
webEngine.load(url);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
fxPanel.setScene(scene);
}
});
}
}
Это прекрасно, спасибо! – lwa