Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在单独的类中初始化第二个窗口(例如ChoiceBox)_Java_Javafx_Initialization_Window - Fatal编程技术网

Java 在单独的类中初始化第二个窗口(例如ChoiceBox)

Java 在单独的类中初始化第二个窗口(例如ChoiceBox),java,javafx,initialization,window,Java,Javafx,Initialization,Window,我有两个窗口控制器,它们都加载一个FXML文件并显示一个屏幕。第一个GUIController是主窗口,它生成第二个窗口PackageBuilder,用户在其中输入一些数据并将其存储 第二个窗口是通过主窗口中的按钮生成的,如(FXML链接): 我认为第二个类不能调用JavaFX应用程序启动方法,需要传递原始场景。所以我在PackageBuilder中写了以下内容: public PackageBuilder(Scene owner) { /* Removed redundant setu

我有两个窗口控制器,它们都加载一个FXML文件并显示一个屏幕。第一个GUIController是主窗口,它生成第二个窗口PackageBuilder,用户在其中输入一些数据并将其存储

第二个窗口是通过主窗口中的按钮生成的,如(FXML链接):

我认为第二个类不能调用JavaFX应用程序启动方法,需要传递原始场景。所以我在PackageBuilder中写了以下内容:

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 */
    }
}