1

JDialog 类中是否存在一种方法来防止子窗口(JDialog)在用于打开它的主窗口(JFrame)的按钮被多次按下时多次显示?提前谢谢了!

4

3 回答 3

2

是的,您不需要将框设为模态即可(尽管将其设为模态将是最简单的方法)。

只需执行以下操作

在您的成员声明中:

private final MyDialog dialog = new MyDialog();

在您的代码中:

private void showDialog() {
   dialog.setVisible(true);
   dialog.requestFocus(); // May be needed to bring window to front
}

这将确保您只实例化一次该框。只要按下按钮,只需调用 showDialog() 即可。

于 2010-01-19T17:08:10.563 回答
1

我过去使用 Swing 完成的另一种方法是,当按下按钮时,我要做的第一件事就是禁用按钮。然后我使用可观察模式查看子窗口并在子窗口关闭时重新启用按钮。这样,如果由于某种原因需要一段时间来显示子窗口,用户就不能多次单击它并搞砸了。

于 2010-01-19T17:19:52.623 回答
0

您可以制作JDialog模式,然后父窗口在关闭之前不会做出反应。

或者您可以初始化JDialog之前,并在按下按钮时使其可见。使其可见两次不会显示两次。

于 2010-01-19T17:04:27.417 回答