Java AbstractTableModel setValueAt在单击Jbutton时不触发

Java AbstractTableModel setValueAt在单击Jbutton时不触发,java,swing,tablemodel,Java,Swing,Tablemodel,我有一个自定义的TableModel,它扩展了AbstractTableModel public class IndicatorPropertyTableModel extends AbstractTableModel 我编写的setValueAt函数在您在可编辑单元格中键入新值,然后移动到另一个单元格的情况下会正确触发。我遇到的问题是,对于最后一个可编辑的单元格,用户将立即单击JButton继续。这不会触发setValueAt函数,因此不会保存数据。当用户在编辑单元格后立即点击按钮时,是否有

我有一个自定义的TableModel,它扩展了AbstractTableModel

public class IndicatorPropertyTableModel extends AbstractTableModel
我编写的setValueAt函数在您在可编辑单元格中键入新值,然后移动到另一个单元格的情况下会正确触发。我遇到的问题是,对于最后一个可编辑的单元格,用户将立即单击JButton继续。这不会触发setValueAt函数,因此不会保存数据。当用户在编辑单元格后立即点击按钮时,是否有一种好方法确保始终存储此值?如有需要,请在下面的函数中设置值以供参考

public void setValueAt(Object value, int row, int col) {
    if (value == null)
        return;
    if (col == 0) {
        //this.indicatorArguments[row].setIsSelected(value);
    } else if (col == 2) {
        this.indicatorArguments[row].setValue(value);
    }
    this.fireTableCellUpdated(row, col);
}

谢谢您的帮助。

我想您的按钮在桌子外面

在按钮的事件侦听器或操作中,您需要表的引用。在这个表中,您可以询问是否返回true。然后,在验证最后一个输入值之后,可以调用提交值或撤消值

简言之:

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

将始终提交尚未输入的值。

检查表是否正在编辑需要向GUI上的所有按钮添加代码


您可以使用简单的单线解决方案来避免这种情况。退房。

您的假设是正确的,按钮在桌子外面。提供的代码工作得非常好。谢谢