2010-01-19 91 views

回答

2

是的,你不需要使箱子模式来做到这一点(尽管使模式是最简单的方法)。

只需像做以下

在您的会员delcarations:

private final MyDialog dialog = new MyDialog(); 

在您的代码:

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

这将确保只实例化箱一次。只要按下按钮,只需调用showDialog()。

+0

皮特,示例代码总是提供更好的答案,不是吗? – 2010-01-19 17:16:24

0

您可以使JDialog模式,然后父窗口将不会作出反应,直到它被关闭。

或者你可以在初始化JDialog之前,只需按下按钮使其可见即可。将其显示两次将不会显示两次。

1

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