gpt4 book ai didi

java - JOptionPane.showMessageDialog 等到单击确定?

转载 作者:搜寻专家 更新时间:2023-10-31 08:13:54 24 4
gpt4 key购买 nike

这可能是我忽略的一件非常简单的事情,但我似乎无法弄明白。

我有以下更新 JTable 的方法:

class TableModel extends AbstractTableModel {    
public void updateTable() {
try {
// update table here
...
} catch (NullPointerException npe) {
isOpenDialog = true;
JOptionPane.showMessageDialog(null, "No active shares found on this IP!");
isOpenDialog = false;
}
}
}

但是,在按下消息对话框上的 OK 按钮之前,我不希望将 isOpenDialog boolean 值设置为 false,因为如果用户按下 enter,它将激活 KeyListener 文本字段上的事件,如果它设置为 false,它会再次触发整个代码块。

部分KeyListener代码如下所示:

public class KeyReleased implements KeyListener {
...

@Override
public void keyReleased(KeyEvent ke) {
if(txtIPField.getText().matches(IPADDRESS_PATTERN)) {
validIP = true;
} else {
validIP = false;
}

if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
if (validIP && !isOpenDialog) {
updateTable();
}
}
}
}

JOptionPane.showMessageDialog() 是否有某种机制可以防止在按下 OK 按钮之前执行下一行?谢谢。

最佳答案

JOptionPane 创建了一个模态对话框,因此按照设计,在处理对话框(按下其中一个按钮或按下关闭菜单按钮)之前,不会调用超出它的行。

更重要的是,您不应该为这类事情使用 KeyListener。如果您想让 JTextField 监听回车键的按下,请向其添加一个 ActionListener。

关于java - JOptionPane.showMessageDialog 等到单击确定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10965168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com