2013-03-06 88 views
0

enter image description here將鍵盤上的某些數值放入程序之後,舞臺開始了,但同時我想讓舞臺打開,用戶可以再次放置一些值並重新啓動舞臺。JavaFX我可以重繪舞臺嗎?

這可能嗎?

我願做這樣的事情:

 primaryStage.setScene(scene); 
    primaryStage.show(); 

    javafx.application.Platform.runLater(new Runnable() { 
     public void run() { 
      if (TastaturEingabe.readBoolean("Möchten Sie ein neues Diagramm zeichnen?")) { 

       // Input through keyboard 
       readInputJahrgang(vintage, FIRST_PROMPT); 
       readInputLager(vintage, FIRST_PROMPT); 
       primaryStage.hide(); 
      } else { 
       primaryStage.close(); 
      } 
      return; 
     } 
    }); 
+0

其實,我不明白..鍵盤輸入完成到控制檯?在一般情況下,你可以設置新的舞臺..你可以隱藏/顯示舞臺.. – 2013-03-06 22:30:26

+0

我改變了它。希望它現在更清楚:/ 但它不工作。我的舞臺結冰了,我無法做任何事情。在另一種情況下(如果readBoolean爲true)舞臺關閉,沒有更多可能。 我想我需要做一些事情來開始的方法,所以我可以再次做同樣的事情。但在這種情況下,我不知道如何。 對不起,如果這是愚蠢的問題。 – Sonja 2013-03-06 23:00:56

回答

2

這是用戶和應用之間交互的設計錯誤。

javafx.application.Platform.runLater(new Runnable() { 
    public void run() { 

將在JFX線程上運行,並且當您在命令行中與用戶通話時,UI將被凍結。

您可以通過comandline在一個單獨的線程中與用戶交談,該線程可以使用runLater()調用通知JFX關於新用戶輸入。

所以,你可以創建一個啓動方法一個單獨的線程,並把其運行的

readInputJahrgang(vintage, FIRST_PROMPT); 
readInputLager(vintage, FIRST_PROMPT); 

電話。

當用戶輸入重新繪製UI所需的新信息時,請調用runLater()。

通常情況下,您不需要強制JavaFX重繪任何東西。它會自己做任何事情

+0

我認爲問題是,我還沒有與線程一起工作。感謝您的幫助。有用!!!真棒。 – Sonja 2013-03-13 19:02:56

+0

關於UI構建的主要問題是當用戶程序正在做一些有用的事情時,對用戶的迴應。這個任務需要使用線程。當一個線程服務於用戶需求時,以及其他人 - 做一個有用的工作。它的協調 - 是主要問題之一。線程化 - 對於有效的UI構建來說是一個意義深遠的知識。嘗試查看javafx.concurrent包以獲取有關JFX中線程化的更多信息 – 2013-03-13 19:40:19