内部图形尚未初始化:javafx

时间:2015-01-08 11:49:10

标签: java image javafx

我试图在窗口内写一个javaFx个应用程序。
简短的故事是我有一个名为enum的{​​{1}}类,每个糖果都有一些属性和代表它的图像文件的路径。
在我的Candy类(javafx.application)的构造函数中,我想用这些图像填​​充数组列表,所以到目前为止我写了这个:

Table

现在,每次我想创建public class Table extends Application { ArrayList<Image> images; @Override public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("CandyFx"); primaryStage.show(); } public Table() { images = new ArrayList<Image>(); for (Candy candy : Candy.values()) { File file = new File (candy.getImagePath()); Image image = new Image(file.toURI().toString()); images.add(image); } } } 类的实例时,应用程序都会抛出Table
我怎么能初始显示我看不到的图形呢?

3 个答案:

答案 0 :(得分:5)

首先,如果您使用的是Linux,则需要GTK 2.18才能运行JavaFX .try来安装

libswt-gtk-3-java

只要屏幕为空,就会抛出此异常。尝试在start方法中创建图像。就在primaryStage.show();之前。

请看一下这个链接

http://cr.openjdk.java.net/~vadim/RT-33475/webrev.00/modules/graphics/src/main/java/com/sun/glass/ui/Screen.java.html

答案 1 :(得分:2)

我不知道它是如何工作的,但是当我们在开始时首先创建一个JFXPanel时,我们不再能够得到错误。

JFXPanel jfxPanel = new JFXPanel();

答案 2 :(得分:0)

实际上,JavaFX Stage类是顶级JavaFX容器,应在JavaFX Application Thread上进行构造和修改。

这里您使用的是Stage类,但尚未将JavaFx内容嵌入到Swing应用程序中,这可能会向您显示一个'java.lang.RuntimeException,其中消息尚未初始化内部图形。

在这里您可以使用-

protected

或者您也可以通过这种方式使用。

JFXPanel jfxPanel = new JFXPanel();

JFXPanel是一个将JavaFX内容嵌入到Swing应用程序中的组件。使用setScene(javafx.scene.Scene)方法指定要显示的内容,该方法接受JavaFX Scene的实例。分配场景后,它会自动重新绘制。所有输入和焦点事件都透明地转发给开发人员。

参考:

JFrame frame = new JFrame("Java Swing And JavaFX");  
JFXPanel jfxPanel = new JFXPanel();  
frame.add(jfxPanel);