Java JTable编辑后更新单元格值

Java JTable编辑后更新单元格值,java,swing,jtable,Java,Swing,Jtable,为什么我的表在设置值后不更新。我有setValuesAt方法,但它不起作用 String[] ColumnNames = {"Register","Value"}; String[][] data = new String[Integer.parseInt(Amount_Text_Field.getText())][ColumnNames.length]; DefaultTableModel model = new DefaultTableModel(data, Colu

为什么我的表在设置值后不更新。我有setValuesAt方法,但它不起作用

    String[] ColumnNames = {"Register","Value"};
    String[][] data = new String[Integer.parseInt(Amount_Text_Field.getText())][ColumnNames.length];
    DefaultTableModel model = new DefaultTableModel(data, ColumnNames)
    {   
        private static final long serialVersionUID = 1L;

        @Override
        public boolean isCellEditable(int row, int column)
        {
            return true; 

        }

        @Override
        public void setValueAt(Object value, int row, int column) {

            data[row][column]=(String) value;

            fireTableCellUpdated(row, column);  
        }
    };

无需重写DefaultTableModel的setValueAt()方法。DefaultTableModel已经实现了该方法

String[][] data = new String[Integer.parseInt(Amount_Text_Field.getText())][ColumnNames.length];
我猜在调用上述语句时,您的文本字段不包含任何数据。因此,没有数据要添加到表中

如果您希望使用“添加数据”按钮在文本字段中输入数据,则需要使用“添加数据”按钮。然后在按钮的
ActionListener
中执行以下操作:

String[] row = new String[Integer.parseInt(Amount_Text_Field.getText())][ColumnNames.length];
model.addRow( row );

此外,变量名不应以大写字符开头。有些是正确的,有些则不然。保持一致

无需重写DefaultTableModel的setValueAt()方法。DefaultTableModel已经实现了该方法

String[][] data = new String[Integer.parseInt(Amount_Text_Field.getText())][ColumnNames.length];
我猜在调用上述语句时,您的文本字段不包含任何数据。因此,没有数据要添加到表中

如果您希望使用“添加数据”按钮在文本字段中输入数据,则需要使用“添加数据”按钮。然后在按钮的
ActionListener
中执行以下操作:

String[] row = new String[Integer.parseInt(Amount_Text_Field.getText())][ColumnNames.length];
model.addRow( row );

此外,变量名不应以大写字符开头。有些是正确的,有些则不然。保持一致

无需重写DefaultTableModel的setValueAt()方法。DefaultTableModel已经实现了该方法。您只需要重写isCellEditable()方法,而不需要重写DefaultTableModel的setValueAt()方法。DefaultTableModel已经实现了该方法。您只需要重写isCellEditable()方法。