简体   繁体   中英

Java AbstractTableModel Dynamically populating rows

I am trying to add rows dynamically in a table with AbstractTableModel. The rows are being added in a loop. When the second row gets added, the values of the first row show as null in table. The program is designed such a way that the rows values get refreshed but just for the user's viewing sake, how can i keep the values on the table as it is without it being refreshed to null values.

Why does the table always refreshes the table rendering from first row? Is there a way to render only next row without reprinting what has already been printed in the first row.

Here are some parts of my code:

public class RunConfig extends AbstractTableModel {


    private final LinkedList<Section> daten = new LinkedList<Section>();
    private String[]        header = {"Links","% N", "% M", "% H", "% S"};

    public RunConfig() {

    }

    public void addElement(Section addValue)
    {
        daten.add(addValue);
        fireTableRowsInserted(daten.size()-1, daten.size()-1);
    }

    public int getColumnCount() {
        return header.length;
    }

    public String getColumnName(int col) {
        return header[col];
    }


    public Object getValueAt(int row, int col) {
        return ((Section)daten.get(row)); 
    }

    public int getRowCount() {
        return daten.size();
    }

    public boolean isCellEditable(int row, int col){
        return false;
    }

}

I am wondering if the application is managing the Section objects correctly. Please make sure every addElement is working with a different instance of Section object and not reusing the same object or nulling its fields after adding to the table model:

Please try the following to make sure table gets a unique object that is never modified from the outside:

public void addElement(Section addValue) {
    Section sec = new Section();
    // TODO copy fields
    daten.add(sec);
    fireTableRowsInserted(daten.size() - 1, daten.size() - 1);
}

Since i couldn't figure out how to resolve the issue, i used a simple defaultTableModel instead and took the data in an array and populated the table dynamically row by row. Its easy too. Thanks for your help and comments.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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