【问题标题】:How to open a new window from static method - JavaFX [duplicate]如何从静态方法打开一个新窗口 - JavaFX [重复]
【发布时间】:2019-12-29 20:10:00
【问题描述】:

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

如何通过static 方法启动新窗口?

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

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

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

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

.

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();
}

【问题讨论】:

    标签: java javafx


    【解决方案1】:

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

    【讨论】:

    • 我收到以下异常 - javafx.fxml.LoadException: ..........CustomIndexScreen.fxml at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) at javafx .fxml.FXMLLoader.loadImpl(FXMLLoader.java:2543) 在 javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) 在 javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409)
    • Caused by:s 说什么? @ShirZabolotnyKlein(如果您现在面临的问题尚不存在,请考虑提出一个新问题)
    • 可能是“CustomIndexScreen.fxml”路径不正确
    • 不,不可能。否则FXMLLoader 不可能知道.fxml 文件的url。 Stacktrace 包含网址。对于未找到的资源,getResource 将简单地返回 null
    猜你喜欢
    • 2013-02-09
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2013-08-02
    • 1970-01-01
    • 2021-06-30
    • 2020-03-19
    相关资源
    最近更新 更多