javafx - 如何在JavaFX中等待用户的操作(在同一阶段)

标签 javafx wait interaction

你知道如何在for循环中等待用户的输入吗?我不是指 showAndWait() 方法,因为我没有为用户打开一个新的对话阶段。例如,for 循环的每一轮都应该等待用户按下按钮,然后再继续下一轮。

这怎么可能?非常感谢!

更新:

现在我想到,它可以与 while(buttonNotPressed){} 一起使用,但这是一个好的解决方案吗?我的意思是,在这种情况下, while 循环疯狂地运行,直到用户不会按下按钮。或者它的工作方式与等待方法类似吗?

将其想象为一个 session : 用户使用 handleStart() 开始 session 您一一向用户提出 5 个问题。在每次迭代中,用户都可以回答即将出现的问题,并且可以通过handleSaveButton()保存或提交答案。您可以根据需要处理答案,然后继续进行下一次迭代。关键是,迭代必须停止,直到保存按钮未被按下。

最佳答案

别那样做。与任何事件驱动的 GUI 工具包一样,FX 工具包已经实现了一个循环,用于渲染场景图和处理每次迭代的用户输入。

只需向按钮注册一个监听器,然后在按下按钮时执行您需要执行的操作:

button.setOnAction(event -> {
    // your code here...
});

如果您希望操作发生变化,只需在每次执行操作时更改某个变量的状态即可:

private int round = 0 ;

// ...

button.setOnAction(event -> {
    if (round < 5) {
        System.out.println("Round "+round);
        System.out.println("User's input: "+textArea.getText());
        round++ ;
    }
});

关于javafx - 如何在JavaFX中等待用户的操作(在同一阶段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59329716/

相关文章:

user-interface - 我可以在 Java FX 中嵌入 PApplet 吗

java - 在 GridPane 上绘制的线不会显示

java - 如何通过gradle运行多个Java类?

Python 中的 Java Fluent Wait

r - 如何使用 R 中的 stargazer 在同一行中输出多个变量

用于 ListView 的 JavaFX 平滑滚动

selenium - 机器人框架 : How to make Wait until keyword from selenium library return true or false

java程序不等待用户输入

r - 使用 dplyr 进行交互频率计数,必须包括零计数

windows-phone-7 - 互动触发器不会触发属性更改事件