【问题标题】:Java Application this operation is permitted on the event thread only ErrorJava 应用程序仅允许在事件线程上执行此操作 错误
【发布时间】:2017-06-30 16:00:55
【问题描述】:

我有创建类图形的类 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;
    }
}

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

【问题讨论】:

  • 制作 MainGUI extends Application 而不是 PlayerScreen
  • 只需省略PlayerScreen screen = new PlayerScreen(),然后调用Application.launch(PlayerScreen.class, args);(它将为您实例化PlayerScreen)。 (目前还不清楚通过在这里设置两个不同的类来实现什么分离。)
  • @James_D 谢谢,那行得通。我需要有两个类,因为 MainGui 还必须显示另外两个阶段。 (你可以把它写成答案,顺便拿分)
  • 但在这种情况下,PlayerScreen 应该是应用程序的子类。 Application 子类(应该只有一个)应该代表整个应用程序。即使采用了我建议的修复方法,您的配置仍然严重错误。

标签: java javafx launch


【解决方案1】:

制作MainGUI extends Application 而不是PlayerScreen

在应用程序方法中,start() 在应该用于所有 UI 交互的特殊线程上调用。此外,应用程序首先为您准备了Stage。所以你不需要显式创建它。

【讨论】:

    【解决方案2】:

    你应该使用 Platform.runLater(()->{//code here})

    【讨论】:

      猜你喜欢
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 2016-08-24
      • 2015-04-25
      • 2014-12-06
      相关资源
      最近更新 更多