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

标签 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不被接受

最佳答案

使MainGUI扩展Application而不是PlayerScreen

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

关于Java 应用程序仅在事件线程上允许此操作错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44850645/

相关文章:

JavaFx for ARM (Raspberry Pi/BeagleBoard)

android - token android.os.BinderProxy@e4f4f2b 无效;你的 Activity 在运行吗?

android - 我的 Unity 2017.1.0f3 制作的游戏在手机上启动时崩溃

java - 将一个文件附加到另一个文件

java - 在 linux 机器上遇到编码问题,而不是 Windows

java - 尝试使用常量字符串分隔符从扫描仪读取 - java.util.scanner

javafx - Java FX 使用 fxml 文件创建自定义对话框。如何设置或从中获取结果?

JavaFX 获取资源 (.css)

java - 如何为 Mac OSX 创建类似 Windows 的可点击快捷方式?

Java读取文件并将文本存储为数组