Java AbstractTableModel动态填充行

时间:2015-06-16 01:19:28

标签: java swing abstracttablemodel

我正在尝试使用AbstractTableModel在表中动态添加行。行正在循环中添加。添加第二行时,第一行的值在表中显示为null。该程序的设计使得行值得到刷新,但仅仅是为了用户的查看,如何保持表中的值不被刷新为空值。

为什么表总是刷新第一行的表格渲染?有没有办法只渲染下一行而不重新打印第一行中已经打印的内容。

以下是我的代码的一些部分:

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;
    }

}

2 个答案:

答案 0 :(得分:0)

我想知道应用程序是否正确管理 Section 对象。请确保每个 addElement 使用不同的Section对象实例,并且在添加到表模型后不重用相同的对象或将其字段置零:

请尝试以下操作以确保表格获得一个永远不会从外部修改的唯一对象:

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

答案 1 :(得分:0)

由于我无法弄清楚如何解决这个问题,我使用了一个简单的defaultTableModel,并将数据放入一个数组中并逐行动态填充表。它也很容易。感谢您的帮助和意见。