3

我有一个扩展 AbstractTableModel 的自定义 TableModel。

public class IndicatorPropertyTableModel extends AbstractTableModel

当您在可编辑单元格中键入新值然后移动到另一个单元格时,我编写的 setValueAt 函数会适当地触发。我遇到的问题是,对于最后一个可编辑单元格,用户将立即单击 JButton 继续。这不会触发 setValueAt 函数,因此不会保存数据。当用户在编辑单元格后立即点击按钮时,是否有一种好方法可以确保始终存储此值?如果需要,请参考下面的 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);
}

感谢您的任何帮助,您可以提供。

4

2 回答 2

4

我假设你的按钮在桌子外面。

在按钮的事件侦听器或操作中,您需要对表格的引用。这个表你可以询问isEditing是否返回 true。然后您将获得当前编辑器,并在验证最后一个输入值后调用stopCellEditing提交该值或调用 cancelCellEditing撤消该值。

简而言之:

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

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

于 2011-04-05T13:29:51.297 回答
1

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

您可以使用一种简单的单行解决方案来避免这种情况。检查表停止编辑

于 2011-04-05T15:37:54.400 回答