Java应用程序此操作仅在偶数线程上允许错误

时间:2017-06-30 16:00:55

标签: java javafx launch

我有一个类PlayerScreen来创建一个类的图形,我想从类MainGUI运行它,但我不断获得java.lang.IllegalStateException: This operation is permitted on the event thread only; currentThread = main

import javafx.application.Application;
import javafx.stage.Stage;

public class PlayerScreen extends Application {
    @Override
    public void start(Stage primaryStage){
        primaryStage.setTitle("Player Screen");
        primaryStage.show();
    }
     public static void main(String[] args) {
            launch(args);
        }
}
import javafx.application.Application;
import javafx.stage.Stage;

public class MainGUI {
    private static Stage stage = new Stage();
    public static void main(String[] args) {
         PlayerScreen screen = new PlayerScreen();
         PlayerScreen.launch(args);
        }
    public Stage getStage() {
        return stage;
    }
    public void setStage(Stage stage) {
        MainGUI.stage = stage;
    }
}

我尝试使用PlayerScreen.launch(args);screen.launch(args);代替Application.launch(args);,但我仍然遇到同样的错误。还有另一个launch方法包含该类,但我不知道在第二个变量Application.launch(MainGUI.class, args); args中放入什么不被接受

1 个答案:

答案 0 :(得分:1)

制作MainGUI extends Application而不是PlayerScreen

应用程序方法中的

在特殊线程上调用start(),该线程应该用于所有UI交互。此外,应用程序首先为您准备Stage。因此,您不需要明确创建它。