首页 > 解决方案 > 如何从静态方法打开一个新窗口 - JavaFX

问题描述

我正在尝试通过创建自定义弹出窗口JavaFX,并且从static方法启动它时遇到了一些麻烦。

如何从static方法启动新窗口?

关于我的程序的一般信息 - 用户应键入数据并选择/取消选择checkbox. 按下“提交”会button运行一个static做一些事情的方法,并根据用户的checkbox选择 - 运行另一个做其他事情的方法。

如果checkbox取消选择,我想打开另一个窗口(自定义弹出窗口)。

但是,我不能这样做,因为我所有的方法都是static(无法改变)。该方法uploadCustomIndexWindow被定义为静态的,因此,当我尝试启动我的自定义弹出窗口时,我得到了错误

无法从 Object 类型对非静态方法 getClass() 进行静态引用。

.

private static Index getStartEndIndex(String childFormat, boolean isFromExportTDP) {

    if(IndexMap.getIndexMap().get(childFormat) == null) {

        Index index;
        if (isFromExportTDP) {
            if(childFormat.equalsIgnoreCase("pdf")){
                index = new Index(childFormat, 2, 12);
            }
            else {
                index = new Index(childFormat, 2, 5);
            }
        }
        else{
            // Custom pop-up
            uploadCustomIndexWindow();

            index = new Index(childFormat, startIndex, endIndex);
        }
        IndexMap.getIndexMap().put(childFormat, index);
    }
    return IndexMap.getIndexMap().get(childFormat);
}



public static void uploadCustomIndexWindow() throws IOException{
    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("CustomIndexScreen.fxml"));
    Parent root1 = (Parent) fxmlLoader.load();
    Stage stage = new Stage();
    stage.setScene(new Scene(root1));
    stage.setTitle("Custom Index Screen");
    stage.show();
}

标签: javajavafx

解决方案


请使用“YourClassName.class”而不是“getClass()”!


推荐阅读