我有一个巨大的摇摆应用程序,我想将 javafx 嵌入其中。我尝试了很多次(通过遵循 oracle 教程等),只有当我声明一个新的 JFrame 以使用 JFXPanel 组件时我才成功。但是,我不想使用新的 Frame,我想将我的 Javafx 代码合并到 swing 应用程序的根 JFrame 中。
我们可以将 javaFX 组件嵌入 JPanel 而不是 JFrame 吗?如果答案是肯定的,为什么我没有成功?
有可能是错误的代码示例:
此类直接扩展 JPanel,并在 EDT 中调用 initialize 方法
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);
}