Java JSpinner更新

Java JSpinner更新,java,swing,jspinner,tablecelleditor,Java,Swing,Jspinner,Tablecelleditor,我创建了一个dataTable和cellEditor,形成一列。此列是简单的jSpinner。我有以下问题。当我在微调器中输入某个值并选择另一行时,上一行中的值不会更改。如果我按一下,就可以了。如果我选择或按钮,它也将完成。但如果我输入值并更改选择,则不会执行此操作。请帮忙。这是CellEditor代码 public class DurationTableCellEditor extends AbstractCellEditor implements TableCellEditor{ fina

我创建了一个dataTable和cellEditor,形成一列。此列是简单的jSpinner。我有以下问题。当我在微调器中输入某个值并选择另一行时,上一行中的值不会更改。如果我按一下,就可以了。如果我选择或按钮,它也将完成。但如果我输入值并更改选择,则不会执行此操作。请帮忙。这是CellEditor代码

public class DurationTableCellEditor extends AbstractCellEditor implements TableCellEditor{

final JSpinner spinner = new JSpinner();

// Initializes the spinner.
public DurationTableCellEditor() {
    spinner.setModel(new SpinnerNumberModel(1,1,50000,1));        
}

// Prepares the spinner component and returns it.
public Component getTableCellEditorComponent(JTable table, Object value,
        boolean isSelected, int row, int column) {
    spinner.setValue(new Integer(value.toString()).intValue());
    spinner.setCursor(null);
    return spinner;
}

// Enables the editor only for double-clicks.
@Override
public boolean isCellEditable(EventObject evt) {
    if (evt instanceof MouseEvent) {
        return ((MouseEvent)evt).getClickCount() >= 1;
    }
    return true;
}

// Returns the spinners current value.
public Object getCellEditorValue() {
    return spinner.getValue();
}

}

不清楚如何更新数据模型,但一种方法是在CellEditor中实现ChangeListener,就像它实现ItemListener一样。有关参考,请参阅。特别是FireEditingsToped。最后,您需要一个相应的TableCellRenderer。

完成提交

// Returns the spinners current value.
public Object getCellEditorValue() {
    spinner.commitEdit();
    return spinner.getValue();
}