Java 强制JTable;“提交”;当数据仍处于编辑模式时,将其复制到模型

Java 强制JTable;“提交”;当数据仍处于编辑模式时,将其复制到模型,java,Java,我有一个JTable,如下所示 因此,当JTable仍处于编辑模式时(有一个键盘光标在被除数列处闪烁),直接单击OK不会将数据提交到表模型中。单击“确定”仅关闭对话框 我需要显式地按ENTER键,以便将数据提交到表模型中 当JTable仍处于编辑模式时,在关闭对话框之前,我是否可以告诉JTable“嘿,是时候将更改提交到模型中了” 此对话框的源代码如下所示。当按下OK时,一定要查看执行代码的执行情况。我不确定它是否会工作(如果有一个SCCE会很好),但请尝试以下操作: TableCellEdi

我有一个JTable,如下所示

因此,当JTable仍处于编辑模式时(有一个键盘光标在被除数列处闪烁),直接单击OK不会将数据提交到表模型中。单击“确定”仅关闭对话框

我需要显式地按ENTER键,以便将数据提交到表模型中

当JTable仍处于编辑模式时,在关闭对话框之前,我是否可以告诉JTable“嘿,是时候将更改提交到模型中了”


此对话框的源代码如下所示。当按下OK时,一定要查看执行代码的执行情况。

我不确定它是否会工作(如果有一个SCCE会很好),但请尝试以下操作:

TableCellEditor editor = table.getCellEditor();
if (editor != null) {
  editor.stopCellEditing();
}

要在任何状态(编辑或不编辑)下使整个稳定停止编辑,您可以调用编辑停止:

    table.editingStopped(new ChangeEvent(table));
这样,您就不必检查编辑器/状态等。

提供了几种方法

编辑

文章中的示例:

table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
文章中的示例:

if (table.isEditing())
    table.getCellEditor().stopCellEditing();

您可能使用IDE生成GUI代码。但是你能把变量名改成更友好的吗。当每一个符号都标有button1 button2 Label1时,很难阅读,对此表示担忧。当按下OK键时,一定要查看为执行的代码执行的JButton1AAction。该网站提供了非常有用的Swing编程技巧。我可以知道你是作者吗?我真的希望这是正确的答案,因为它简单而优雅,但是根据文档,这个方法是供JTable内部使用的。从技术上讲,不能保证它在未来的版本中可以访问或以相同的方式工作。话虽如此,我认为JavaSwing库不会很快得到任何重大更新,因此虽然技术上不安全,但我认为它仍然是一个实用的解决方案。