int dialogResult = JOptionPane.showOptionDialog(null, "用户名不允许为空!!!", "请选择操作", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, new Object[]{"重新填写","退出游戏"}, null); 我想让点击“重新填写”后关闭当前弹窗,改如何做
时间: 2024-04-16 11:29:32 浏览: 96
你可以使用以下代码来关闭当前弹窗:
```java
if (dialogResult == 0) {
// 点击了"重新填写"
// 关闭当前弹窗
Window window = SwingUtilities.getWindowAncestor((Component) event.getSource());
window.dispose();
}
```
这段代码会检查 `dialogResult` 的值是否为 0,如果是,表示用户点击了"重新填写"按钮。然后,通过 `SwingUtilities.getWindowAncestor()` 方法获取到当前弹窗所在的顶层窗口,并调用 `dispose()` 方法关闭该窗口。
相关问题
DialogResult = DialogResult.OK;
`DialogResult = DialogResult.OK` 是 Windows 程序设计中常见的一个值,特别是在使用 MessageBox 或者模态对话框(Modal Dialog)的时候。`DialogResult` 是表示用户对对话框操作结果的一个枚举类型,在 C# 中,它通常有以下几个选项:
1. `DialogResult.OK`:当用户点击“确定”按钮或者默认选项时返回,表示操作成功或接受建议。
2. `DialogResult.Cancel`:用户点击了“取消”按钮,或者如果对话框没有明确的确认按钮,则表示用户选择退出或拒绝操作。
3. `DialogResult.None`:如果用户关闭对话框而没有点击任何按钮,可能会返回这个值。
当你设置 `MessageBox.Show` 或其他对话框方法的 `DialogResult` 参数为 `DialogResult.OK` 时,程序通常会期望用户确认某个操作,并继续执行后续逻辑。例如:
```csharp
if (MessageBox.Show("是否保存更改?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.OK)
{
// 用户选择了"确定",执行保存操作
}
```
但是我这个是弹窗JOptionPane.showOptionDialog,它是自带按钮的
对于 `JOptionPane.showOptionDialog` 弹窗,你可以通过以下方式来当前弹窗:
```java
if (dialogResult == JOptionPane.YES_OPTION) {
// 点击了"重新填写"
// 关闭当前弹窗
JDialog dialog = (JDialog) SwingUtilities.getWindowAncestor((Component) event.getSource());
dialog.dispose();
}
```
在这种情况下,`JOptionPane.showOptionDialog` 会返回按钮的索引,而不是直接返回按钮的文本。因此,我们需要检查 `dialogResult` 是否等于 `JOptionPane.YES_OPTION`,以确定用户是否点击了"重新填写"按钮。然后,通过 `SwingUtilities.getWindowAncestor()` 方法获取到当前弹窗所在的 `JDialog` 对象,并调用 `dispose()` 方法关闭该对话框。
阅读全文