我有课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/