javafx 嵌入swing当中:
关键类:JFXPanel
主要问题正确处理javafx线程与Swing EDT线程的关系、
对于EDT需要使用SwingUtilities.invokeLater()
对于javafx scene的构建需要使用Platform.runLater()
而JFXPanel则是javafx与Swing交互的唯一途径,JFXPanel以Scene作为顶级容器,而JFXPanel在Swing中就是一个普通的Panel。
public class Test {
private static void initAndShowGUI() {
// This method is invoked on the EDT thread
JFrame frame = new JFrame("Swing and JavaFX");
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);
frame.setSize(300, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel);
}
关键类:JFXPanel
主要问题正确处理javafx线程与Swing EDT线程的关系、
对于EDT需要使用SwingUtilities.invokeLater()
对于javafx scene的构建需要使用Platform.runLater()
而JFXPanel则是javafx与Swing交互的唯一途径,JFXPanel以Scene作为顶级容器,而JFXPanel在Swing中就是一个普通的Panel。
public class Test {
private static void initAndShowGUI() {
// This method is invoked on the EDT thread
JFrame frame = new JFrame("Swing and JavaFX");
final JFXPanel fxPanel = new JFXPanel();
frame.add(fxPanel);
frame.setSize(300, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Platform.runLater(new Runnable() {
@Override
public void run() {
initFX(fxPanel);
}