管理 JDialog 关闭行为

Managing JDialog close behaviour

我正在使用 JDialog window 在显示我的实际应用程序之前显示 "pin entry" window 的形式。由于我似乎无法隐藏关闭按钮,因此我试图控制单击此按钮时发生的情况。 objective 是让对话框再次自动打开(从而防止访问它后面的表单,除非输入正确的 PIN),但 WindowListener 似乎不是正确的方法。

pinDialog = new JDialog();
pinDialog.setSize(300, 208);
pinDialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
pinDialog.setVisible(true);
pinDialog.addWindowListener(new WindowAdaptor(){
    public void windowClosed(WindowEvent e)
        {
            //things to open the dialog again here
        }
    });

此处的最后一条语句 (addWindowListener) 似乎不是 WindowAdaptor 参数的正确类型,但我已经看到许多使用这种确切方法的示例。问题是因为我使用的是 JDialog 而不是完全使用新框架吗?

but WindowListener does not seem to be the correct approach.

您还需要使用:

 dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);

当您创建对话框时。然后您可以控制 WindowListener 中的行为。

查看 Closing an Application 了解更多信息。本文适用于框架,但基础知识也适用于对话框。