【问题标题】:Trying to launch a new FXML file in javaFX using a method call尝试使用方法调用在 javaFX 中启动新的 FXML 文件
【发布时间】:2017-05-07 17:11:01
【问题描述】:

我正在尝试使用方法调用另一个 fxml 页面,但出现以下错误。

java.lang.IllegalStateException:不在 FX 应用程序线程上; currentThread = AWT-EventQueue-0 在 com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:236) 在 com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:236) 在 com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:423) 在 javafx.stage.Stage.(Stage.java:241) 在 javafx.stage.Stage.(Stage.java:227) 在 thebio.MainController.StudentRegistration(MainController.java:134)

以下方法是我在执行此活动时使用的方法,我不知道我哪里弄错了,任何帮助都将不胜感激。

public void StudentRegistration(){
    try {   
        Platform.setImplicitExit(false);
        Parent root1;
        root1 = FXMLLoader.load(getClass().getResource("Student.fxml"));
        Stage stage = new Stage();
        stage.setTitle("ABC");
        stage.setScene(new Scene(root1));  
        stage.show();
    } catch(Exception e) {
        e.printStackTrace();
    }
}

谢谢。

【问题讨论】:

    标签: java javafx


    【解决方案1】:

    使用Platform#runLater非GUI线程更新GUI

    Platform.runLater(()->{
        Parent root1;
        root1 = FXMLLoader.load(getClass().getResource("Student.fxml"));
        Stage stage = new Stage();
        stage.setTitle("ABC");
        stage.setScene(new Scene(root1));  
        stage.show();
    });
    

    【讨论】:

    • 谢谢你,我很感激。我是 javafx 的新手,我不知道我将如何实现它。我真诚地感谢您的快速回复。
    • 如果我想关闭之前的 fxml 怎么办?
    • @DerinS 不能不看代码就说,但是如果你没有对舞台对象的引用,你不能从这个类中关闭窗口。如果你有,只需拨打.hide()就可以了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 2014-02-03
    相关资源
    最近更新 更多