如何防止 JOptionPane.showConfirmDialog 框关闭

How to prevent JOptionPane.showConfirmDialog box from closing

我正在显示带有一些输入字段的 ConfirmDialog。当保存失败(验证失败)时,我想显示一个 MessageDialog 框,但我不希望 ConfirmDialog 框消失。我该怎么做?

下面是我打开 ConfirmDialog 的 actionPerformed 方法(当我使用此方法作为事件处理程序单击按钮时)

@Override
public void actionPerformed(ActionEvent e) {

    int result = JOptionPane.showConfirmDialog(null, panel, "New transaction",
        JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
    if (result == JOptionPane.OK_OPTION) {

        // save transaction
        Transaction transaction = new Transaction();

        // ...

        if (transaction.save()) {
            // close the ConfirmDialog is OK, save was successful
        } else {

            // don't close the ConfirmDialog, save failed

            JOptionPane.showMessageDialog(panel, "Please fix the errors");
        } 
    }
}

您不能使用 JOptionPane class 的静态方法来创建对话框。

您需要创建自己的对话框,然后使用 JOptionPane 作为对话框的 contentPane。

阅读 Swing 教程中关于 Stopping Automatic Dialog Closing 的部分,以获取有关如何完成此操作的示例代码。