Java 在单独的类中初始化第二个窗口(例如ChoiceBox)
我有两个窗口控制器,它们都加载一个FXML文件并显示一个屏幕。第一个GUIController是主窗口,它生成第二个窗口PackageBuilder,用户在其中输入一些数据并将其存储 第二个窗口是通过主窗口中的按钮生成的,如(FXML链接): 我认为第二个类不能调用JavaFX应用程序启动方法,需要传递原始场景。所以我在PackageBuilder中写了以下内容:Java 在单独的类中初始化第二个窗口(例如ChoiceBox),java,javafx,initialization,window,Java,Javafx,Initialization,Window,我有两个窗口控制器,它们都加载一个FXML文件并显示一个屏幕。第一个GUIController是主窗口,它生成第二个窗口PackageBuilder,用户在其中输入一些数据并将其存储 第二个窗口是通过主窗口中的按钮生成的,如(FXML链接): 我认为第二个类不能调用JavaFX应用程序启动方法,需要传递原始场景。所以我在PackageBuilder中写了以下内容: public PackageBuilder(Scene owner) { /* Removed redundant setu
public PackageBuilder(Scene owner) {
/* Removed redundant setup info */
fstart(owner);
}
private void fstart(owner) {
Stage window = new Stage();
window.initModality(Modality.APPLICATION_MODAL);
FXMLLoader loader;
Scene scene;
try {
loader = new FXMLLoader(getClass().getResource("PackageBuilder.fxml"));
scene = new Scene(loader.load());
window.initOwner(owner);
window.setScene(scene);
window.showAndWait();
} catch (IOException e) {
e.printStackTrace();
}
}
如果可以调用initialize方法,这一切都是好的。但它不能。那么,是否有一种方法可以在其他任何地方初始化ChoiceBox的元素
我猜某处有个愚蠢的错误。始终存在。具有要初始化的ChoiceBox的第二个类可以实现一个接口:
public class PackageBuilder implements Initializable{
@Override
public void initialize(URL url, ResourceBundle rb){
/* Initialize things needed */
}
}
该方法在类的构造函数之前调用。请观看此视频,因为您在1小时前提出了一个问题,但没有人回答。现在,我只是没有足够的时间来帮助你。。。为什么要用新的阶段而不是对话?@user1803551这里的设计不是问题。如果事实上不能做到这一点,这就成了一个问题。贴一张。我在任何地方都看不到
选择框
,应用程序
启动代码或私有void fstart(owner)
的类型参数。这应该是问题的编辑,而不是答案。@user1803551我在给出答案后回答了自己的问题。为什么这需要编辑?实现可初始化接口就是答案。它不是对您发布的问题的回答,它可能已经解决了您的根本问题,但您在代码中显示的内容与此无关(并且在任何情况下都没有ChoiceBox
。@user1803551这是毫无意义的,但再一次,我只是问了一下JavaFX的初始化。ChoiceBox是一个需要初始化的项目示例。我想我的措辞是错误的,我没有把自己的意思说清楚。
public class PackageBuilder implements Initializable{
@Override
public void initialize(URL url, ResourceBundle rb){
/* Initialize things needed */
}
}