发布了CellEditor。
import java.awt.Component;
import javax.swing.AbstractCellEditor;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;
public class UserCellEditor extends AbstractCellEditor
implements TableCellEditor {
JComponent component = new JTextField();
public Object getCellEditorValue() {
return ((JTextField) component).getText();
}
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
((JTextField) component).setText((String) value);
return component;
}
}
然后我以这种方式调用table方法:
UserTable.getColumnModel().getColumn(0).setCellEditor(new UserCellEditor());
正在编辑单元格,但是不存储按Enter
键或移动到另一个单元格的结果,它会返回原始值。
我错在哪里或我做错了什么?
答案 0 :(得分:2)
看起来您正在编辑本地JTextField
中的值,而您的数据模型随后在编辑完成时返回未更改的值。您的编辑需要按照此example中的建议更新您的模型。
答案 1 :(得分:0)
如果要为列设置CustomTableCellEditor
,则必须在相应TableModel的setValueAt(Object o, int row, int column)
中更新该列,如果不这样做,则永远不会更新新值。顺便说一下,如果你这样定义CustomTableCellEditor
:
public class CustomTableCellEditor extends AbstractCellEditor implements TableCellEditor
您不需要自己发射事件。