通过键盘在程序中放入一些值后,舞台启动了,但同时我想让舞台打开,用户可以再次放置一些值并重新启动舞台。
这可能吗?
我想做这样的事情:
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 :(得分:2)
这是用户和应用程序之间交互的错误设计。
javafx.application.Platform.runLater(new Runnable() {
public void run() {
将在JFX线程上运行,当您在命令行中与用户交谈时,UI将被冻结。
您可以通过comandline在一个单独的线程中与用户交谈,该线程可以使用runLater()调用来通知JFX,关于新用户输入。
因此,您可以在start方法中创建一个单独的线程,然后放入
readInputJahrgang(vintage, FIRST_PROMPT);
readInputLager(vintage, FIRST_PROMPT);
在其runnable中调用。
当用户输入重新绘制UI所需的新信息时,请调用runLater()。
通常情况下,您不需要强制JavaFX重绘任何内容。它将自己完成所有事情