我读过这篇文章: JavaFx 2.x - Swing : Not on FX application thread
参考“线程中的异常”AWT-EventQueue-0“java.lang.IllegalStateException:未初始化工具包”
我在这里找到了一个讨论JavaFX 2.1: Toolkit not initialized
但我无法使用该解决方案
“在 Swing 事件调度程序线程中建立 JFXPanel:”
因为它保持未定义的时间等待。
我在 JDesktopPane 中使用 JInternalFrame 时遇到了同样的问题。
我试过了:
final CountDownLatch latch = new CountDownLatch(1);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFXPanel javafxPanel = new JFXPanel();
latch.countDown();
BorderPane pane = new BorderPane();
javafxPanel.setScene( new Scene(pane) {
Text text = new Text("Hello World");
});
frame.getContentPane().add(javafxPanel, BorderLayout.CENTER);
}
});
this.add(frame);
try {
latch.await();
} catch (InterruptedException ex) {
System.out.println("err");
Logger.getLogger(WorkspacePanel.class.getName()).log(Level.SEVERE, null, ex);
}
其中 frame 是 JInternalFrame 而这是 JDesktopPane。
有什么帮助吗?提前致谢。