簡體   English   中英

TextInputDialog錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM