我从一列中创建了一个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();
}}
发布于 2011-01-23 20:58:19
目前还不清楚如何更新数据模型,但一种方法是在CellEditor中实现ChangeListener,就像这个example实现ItemListener一样。有关参考,请参阅。特别是,看看fireEditingStopped()。最后,您需要一个相应的TableCellRenderer。
发布于 2014-10-01 18:49:39
执行commitEdit()
// Returns the spinners current value.
public Object getCellEditorValue() {
spinner.commitEdit();
return spinner.getValue();
}https://stackoverflow.com/questions/4773436
复制相似问题