2

巨大なスイング アプリケーションがあり、それに 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);

}
4

2 に答える 2