2013-03-06 89 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