[英]TextInputDialog error
我在JavaFX應用程序中顯示TextInputDialog時遇到問題。 在代碼中:
TextInputDialog tid = new TextInputDialog("Your name");
tid.setTitle("Table");
tid.setHeaderText("You have won!");
tid.setContentText("Enter your name: ");
tid.showAndWait();
而且我得到了這樣的錯誤:
Exception in thread "Timer-2" java.lang.IllegalStateException: Not on FX application thread; currentThread = Timer-2
是的,我在應用程序中使用三個或四個計時器。
GitHub- https://github.com/verygoodat/FlappyBox / src / Application / GameController /-函數setState(int),switch(2),我應該在游戲的和處創建一條消息,但是我不能。 那么,什么原因可能導致此問題呢?
這個Platform.runLater(() -> tid.showAndWait())
不起作用
case 2://pause
TextInputDialog tid = new TextInputDialog("Ваше имя");
tid.setTitle("Таблица рекордов");
tid.setHeaderText("Вы побили чей-то рекорд!");
tid.setContentText("Введите ваше имя: ");
Platform.runLater(() -> tid.showAndWait());
Timers.stopTimers();
pr.setFill(Color.rgb(0,0,0,0.5));
pr.clearRect(0,0,pre.getWidth(), pre.getHeight()-50);
pr.fillRect(0,0,pre.getWidth(), pre.getHeight());
pr.setFill(Color.WHITE);
stat = "КОНЕЦ ИГРЫ!";
pr.fillText(stat, WIDTH/2-150, HEIGHT/2);
pr.fillText( "\nPOINTS: "+gamecontroller.score, WIDTH/2-170, HEIGHT/2);
gameover = true;
break;
它是這樣的:
Platform.runLater(() ->
{
TextInputDialog tid = new TextInputDialog();
tid.setTitle("Таблица рекордов");
tid.setHeaderText("Вы побили чей-то рекорд!");
tid.setContentText("Введите ваше имя: ");
tid.showAndWait();
});
在JavaFX中,任何更新UI的操作都需要在FX應用程序線程上運行。 您可以在自己的線程中執行其他任何操作,還可以使用計時器等。但是您應該在Application線程上顯示TextInputDialog。
您可以這樣做:
Platform.runLater(()->tid.showAndWait());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.