【发布时间】:2015-03-06 12:39:17
【问题描述】:
我正在尝试编写一个javaFx 应用程序,该应用程序在一个窗口内包含多个图像。
简短的故事是我有一个名为Candy 的enum 类,每个糖果都有一些属性和代表它的图像文件的路径。
在我的 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 类的实例时,应用程序都会抛出java.lang.RuntimeException: Internal graphics not initialized yet。
我如何才能初始化看起来我没有的图形?
【问题讨论】:
-
在 JavaFX 问题跟踪器中查看相关 cmets:RT-30796 Cannot create a JavaFX Image until "Internal graphics" are initialized。
-
另外,您永远不应该手动创建 Table 类的实例(例如,永远不要写
new Table())。 Table 实例将由 Java 启动器创建 - 有关 JavaFX 应用程序生命周期的详细信息,请参阅JavaFX Application documentation。另请注意a JavaFX Application cannot be launched more than once. -
@jewelsea 谢谢。但是如果我想在我的应用程序中有一些特殊的方法(比如改变屏幕上某些东西的位置的方法)我想从另一个函数中调用呢? (因为我无法在我创建的实例上调用该方法)
-
在调用应用程序启动方法后调用与 JavaFX 应用程序线程上的场景图交互的方法。