巨大なスイング アプリケーションがあり、それに javafx を埋め込みたいと考えていました。私は何度もそれを試みましたが(オラクルのチュートリアルなどに従って)、JFXPanelコンポーネントを使用するために新しいJFrameを宣言したときにのみ成功しました。しかし、私は新しい Frame を使用したくありません。Javafx コードを swing アプリケーションのルート JFrame に組み込みたいのです。
JFrame の代わりに JPanel に javaFX コンポーネントを埋め込むことはできますか? 答えが「はい」の場合、なぜ成功しなかったのですか?
おそらく間違っているコードサンプルがあります:
このクラスは JPanel を直接拡張し、initialize メソッドは EDT で呼び出されます
private void initialize(){
setLayout(new BorderLayout());
final JFXPanel fxPanel = new JFXPanel();
JPanel jp = new JPanel();
jp.add(fxPanel);
jp.setVisible(true);
jp.setSize(500, 300);
jp.setBackground(Color.CYAN);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel);
}
});
add(createButtonsPanel(), BorderLayout.NORTH);
add(jp,BorderLayout.CENTER);
}
private static void initFX(JFXPanel fxPanel) {
Scene scene = initScene();
fxPanel.setScene(scene);
}
private static Scene initScene(){
Group root = new Group();
Scene scene = new Scene(root, javafx.scene.paint.Color.ALICEBLUE );
Text text = new Text();
text.setX(40);
text.setY(100);
text.setFont(new Font(25));
text.setText("Welcome JavaFX!");
root.getChildren().add(text);
return (scene);
}