简体   繁体   English

JTable编辑后更新单元格值

[英]JTable updating cell value after editing

Why my table doesn't update after I set values.I have setValuesAt method but it does not work. 为什么设置值后我的表不更新。我有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);  
        }
    };

There is no need to override the setValueAt() method of the DefaultTableModel. 无需重写DefaultTableModel的setValueAt()方法。 The DefaultTableModel already implements that method. DefaultTableModel已经实现了该方法。

String[][] data = new String[Integer.parseInt(Amount_Text_Field.getText())][ColumnNames.length];

I would guess your text fields don't contain any data when the above statement is invoked. 我猜想当上述语句被调用时,您的文本字段将不包含任何数据。 So there is no data to be added to the table. 因此,没有数据要添加到表中。

If you want the use to enter data into a text field then you need to have a button like "Add data". 如果要用于在文本字段中输入数据,则需要具有“添加数据”之类的按钮。 Then in the ActionListener of the button you do something like: 然后,在按钮的ActionListener中,您可以执行以下操作:

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

Also, variable names should NOT start with an upper case character. 另外,变量名不应以大写字母开头。 Some are correct other are not. 一些是正确的,其他不是。 Be consistent!!! 始终如一!!!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM