Java Swing。如何等待其他JFrames?

4
在JFrame中,当我点击“登录”时,会弹出另一个JFrame,即登录窗口。
我该如何让我的主JFrame在执行其他任何操作之前等待我的登录JFrame退出?

我们可以假设您没有将登录放入模态对话框的原因是什么? - mtvee
3个回答

5

我也建议这样做,但是您能否建议如何使任何JFrame成为模态窗口?我来自Delphi世界,在那里可以调用myForm.showModal; 而不仅仅是myForm.show; 有没有简单的方法实现这种效果? - Peter Perháč
我不知道,但是我的Swing非常生疏,已经多年没有练习了,所以在这个问题上不要相信我。 - Peter
1
模态性仅适用于继承自java.awt.Dialog(如javax.swing.JDialog)的类,仅继承自java.awt.Window的类无法进行建模。 - Andreas Dolk
@Andreas_D,将你的评论改为答案,我会给你点赞。 - Peter Perháč
请注意,如果您使用JModal,必须在调用其构造函数时传入“true”,以便它阻止父级在关闭之前处于活动状态,例如new MyClass(this, true)。 - rogerdpack

2

我同意在这里使用模态对话框是最佳选择,但如果我要回答更一般的问题,比如:

我怎样才能让一个JFrame等待另一个JFrame?

我会说实现这个的最简单方法是注册和触发事件监听器。

  • 在你的“子”窗口中,将“主”窗口注册为事件监听器。
  • 在你的“主”窗口中,
    • 实现你选择的监听器,例如 ActionListener
    • 在监听器调用的方法(例如 actionPerformed)中编写处理每个“子”窗口可以响应的操作的逻辑。

可以轻松地将此实现到许多情况中,包括问题描述中的登录场景。


0

1
JModalFrame不是标准Swing API的一部分。 - Ian Durkan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接