Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不保留单元格的值_Java_Swing_Jtable - Fatal编程技术网

Java 不保留单元格的值

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

张贴在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键或移动到另一个单元格的结果不会被存储,而是返回原始值


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

看起来您正在编辑本地
JTextField
中的值,而您的数据模型随后在编辑完成时返回未更改的值。编辑器需要更新模型,如本节所述。

如果要为列设置
CustomTableCellEditor
,则必须在相应TableModel的
setValueAt(对象o,int行,int列)
中更新该列,如果不这样做,则新值永远不会更新。顺便说一下,如果您用以下方式定义
CustomTableCellEditor

公共类CustomTableCellEditor扩展AbstractCellEditor实现TableCellEditor


您不需要自己触发事件。

看起来正常,类似于在exampledepot.com中看到的代码,可能表code?重新格式化的代码中有错误;如果不正确,请还原。在“我的模型”表中,方法setValueAt未被重写:(