2

我的 Java 应用程序中有两个 GUI 框架。我注意到两个帧都由同一个 EDT 处理。这是有道理的,因为与处理器处理事件相比,用户生成事件的速度要慢得多。但是,如果我将睡眠调用付诸实施,则 EDT 会在指定的时间内睡眠。这确实是有道理的,但问题是,当 EDT 处于睡眠状态时,我可以使用我的另一帧生成事件,尽管它没有显示按钮单击的动画,但是一旦 EDT 退出睡眠,事件就会由 EDT 处理。我无法理解流程,请帮助我。

4

2 回答 2

4

建议:

  • 永远不要调用Thread.sleep(...)Swing 事件线程。绝不。
  • 如果您需要两个窗口(并确保您确实需要它),一个可能应该是一个对话框。
  • 如果您想在第二个窗口处于活动状态时“冻结”一个窗口中的事件,请将第二个窗口设置为模态JDialog 或 JOptionPane(实际上是一样的)。
于 2013-07-21T12:28:35.690 回答
4
  • 你不应该Sleep在 EDT 上,也不应该执行任何耗时的操作。
  • 当 EDT 唤醒时,所有鼠标单击都“溢出”的原因是事件是从 EDT 外部提取到事件队列中的,并且只要 EDT 可用于处理它们就会被处理。
于 2013-07-21T12:29:29.673 回答