如何防止 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 的部分,以获取有关如何完成此操作的示例代码。
我正在显示带有一些输入字段的 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 的部分,以获取有关如何完成此操作的示例代码。