不保留单元格的值

时间:2010-08-25 11:14:39

标签: 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 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键或移动到另一个单元格的结果,它会返回原始值。

我错在哪里或我做错了什么?

2 个答案:

答案 0 :(得分:2)

看起来您正在编辑本地JTextField中的值,而您的数据模型随后在编辑完成时返回未更改的值。您的编辑需要按照此example中的建议更新您的模型。

答案 1 :(得分:0)

如果要为列设置CustomTableCellEditor,则必须在相应TableModel的setValueAt(Object o, int row, int column)中更新该列,如果不这样做,则永远不会更新新值。顺便说一下,如果你这样定义CustomTableCellEditor

public class CustomTableCellEditor extends AbstractCellEditor implements TableCellEditor

您不需要自己发射事件。