gpt4 book ai didi

java - 在 NetBeans 中暂停 while 循环,直到按下确认按钮

转载 作者:行者123 更新时间:2023-12-01 21:59:16 24 4
gpt4 key购买 nike

我正在尝试使用 NetBeans 在 Java 中创建一个框架。它将显示一些数据,同时在 while 循环中从用户那里获取数据。

我可以暂停 while 循环,直到按下确认按钮吗?我发现有人可能会建议 sleep ,但由于我必须让用户输入数据,所以我无法预测他们需要多长时间。

最佳答案

GUI 的事件驱动模型破坏了顺序逻辑代码。

为了保持顺序逻辑,可以维护一个状态,例如枚举:

enum State {
PROMPTING,
ASKING_TWO_FIELDS,
ASKING_THREE_FIELDS,
CALCULATING,
DONE
};

private State state = State.DONE;

(这种显式抽象通常只需要从顺序逻辑或同一表单上的多个状态进行转换。)

然后按下按钮,更改状态并禁用/启用输入组件。

事件异步发生,甚至可能在不同的线程上发生。必须编写响应式代码。在准备工作中,将按下按钮时会发生的事情连接在一起。这是非常零散的。

解决这种困惑的一个方法是分成模型- View -控制类。模型类包含数据, View 是 GUI 组件,一个 Controller (应用程序)从 View 中调用,设置数据并控制 View 。

从 View 中调用是为了使用监听器完成 Swing 。

食谱:

  • 创建一个主类作为 Controller
  • 数据模型类
  • 顶部 View 、GUI 类、JFrame (swing) 或 JavaFX 场景
  • Controller 将模型和 View 保留为字段
  • Controller 将自身传递给 View
  • 将顺序逻辑映射到 Controller 中的枚举状态
  • 编写转换函数 switchState。
  • 不要等待,而是将 ActionListeners 添加到调用 i.a. 的 butten (swing)/ButtonHandlers (JavaFX)。切换状态。
  • 表达业务逻辑的最佳使用方法名称:startTranslated(放置在应用程序上的文本)、manualTranslationDone(手动编辑后按下“翻译”按钮)。

关于java - 在 NetBeans 中暂停 while 循环,直到按下确认按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33870510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com