这可能是我忽略的一件非常简单的事情,但我似乎无法弄清楚。
我有以下更新 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 按钮之前执行下一行?谢谢你。