Java 不保留单元格的值
张贴在CellEditor上Java 不保留单元格的值,java,swing,jtable,Java,Swing,Jtable,张贴在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 A
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键或移动到另一个单元格的结果不会被存储,而是返回原始值
我哪里错了或者我做错了什么?看起来您正在编辑本地
JTextField
中的值,而您的数据模型随后在编辑完成时返回未更改的值。编辑器需要更新模型,如本节所述。如果要为列设置CustomTableCellEditor
,则必须在相应TableModel的setValueAt(对象o,int行,int列)
中更新该列,如果不这样做,则新值永远不会更新。顺便说一下,如果您用以下方式定义CustomTableCellEditor
:
公共类CustomTableCellEditor扩展AbstractCellEditor实现TableCellEditor
您不需要自己触发事件。看起来正常,类似于在exampledepot.com中看到的代码,可能表code?重新格式化的代码中有错误;如果不正确,请还原。在“我的模型”表中,方法setValueAt未被重写:(