我是JavaFX的新手(尝试从Swing中移出),并试图首先创建一个非常基本的窗口。不过,我不断收到以下运行时异常:如何在FX线程上放置东西?
Exception in thread "main" java.lang.IllegalStateException: Not on FX application thread; currentThread = main
at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:210)
at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:393)
at javafx.scene.Scene.<init>(Scene.java:374)
at javafx.scene.Scene.<init>(Scene.java:232)
at bht.tools.util.upd.TestDialog.initGUI(TestDialog.java:39)
at bht.tools.util.upd.TestDialog.<init>(TestDialog.java:24)
at bht.tools.util.upd.TestDialog.main(TestDialog.java:52)
package bht.tools.util.upd;
import java.awt.Window;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.GridPane;
import javax.swing.JDialog;
/**
* TestDialog is copyright Blue Husky Programming ©2014 GPLv3 <hr/>
*
* @author Kyli of Blue Husky Programming
* @version 1.0.0
* - 2014-09-30 (1.0.0) - Kyli created TestDialog
* @since 2014-09-30
*/
public class TestDialog extends JDialog
{
public TestDialog(Window owner)
{
super(owner);
initGUI();
}
private JFXPanel holder;
private Scene interior;
private ProgressBar progressBar;
private GridPane root;
private void initGUI()
{
{
holder = new JFXPanel();
setContentPane(holder);
root = new GridPane();
interior = holder.getScene();
if (interior == null)
holder.setScene(interior = new Scene(root));
interior.setRoot(root);
}
{
progressBar = new ProgressBar();
progressBar.setProgress(-1);
root.add(progressBar, 0, 1);
}
pack();
}
public static void main(String[] args)
{
new TestDialog(null).setVisible(true);
}
}
然而,看着JFXPanel
源代码,构造函数调用其initFX()
方法,初始化FX应用程序线程。 那么,为什么我得到这个错误,我该如何解决?
所以你试图将一个FX组件嵌入到一个Swing对话框中?我不认为这是可能的。 AFAIK只有相反的机制。 查看新的Application类的基本开始。 – Ray 2014-10-01 16:17:46
当然有可能;和[详细记录](http://docs.oracle.com/javase/8/javafx/interoperability-tutorial/swing-fx-interoperability.htm#CHDIEEJE)。 – 2014-10-01 16:20:09
只是一个评论:如果你试图做一些简单的事情,只是为了让自己的脚湿润,将Swing和FX组合起来可能不是一个很容易开始的地方,因为你必须使用两个不同的UI线程。为什么不从一个简单的全功能应用程序开始? – 2014-10-01 16:31:15