如何防止JOptionPane.showConfirmDialog框关闭

时间:2016-09-21 22:46:21

标签: java swing joptionpane

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

下面是我的actionPerformed方法来打开ConfirmDialog(当我点击一个带有此方法的按钮作为事件处理程序时)

@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");
        } 
    }
}

1 个答案:

答案 0 :(得分:1)

您无法使用JOptionPane类的静态方法来创建对话框。

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

阅读Stopping Automatic Dialog Closing上Swing教程中的部分,了解如何完成此操作的示例代码。