Search code examples
javaswingjtabletablemodel

How to add table model values by editing JTable rows?


I have empty TableModel. When I set this model to JTable it hasn't rows. I want to create one empty row, where user can select value in combo box editor. If user selects not-null value, then second row added and I have one object in model. How can I add empty row, when there is not object for this row in model?


Solution

  • The TableModel is your friend: implement it's setValueAt method to add a row after setting the value. Here's an example for doing so by subclassing DefaultTableModel:

        DefaultTableModel model = new DefaultTableModel(1, 3) {
    
            /** 
             * @inherited <p>
             */
            @Override
            public void setValueAt(Object aValue, int row, int column) {
                super.setValueAt(aValue, row, column);
                if (shouldAddRow(row, column)) {
                    addRow(new Object[] {});
                }
            }
    
            private boolean shouldAddRow(int lastEditedRow, int lastEditedColumn) {
                // implement your logic here
                return lastEditedRow == getRowCount() -1;
            }
    
    
        };