我正在尝试使用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;
}
}发布于 2015-06-16 09:46:24
我想知道应用程序是否正确地管理部分对象。请确保每个addElement都在使用节对象的不同实例,而不是在添加到表模型后重用相同的对象或将其字段设为空:
请尝试执行以下操作,以确保表获得一个从未从外部修改过的唯一对象:
public void addElement(Section addValue) {
Section sec = new Section();
// TODO copy fields
daten.add(sec);
fireTableRowsInserted(daten.size() - 1, daten.size() - 1);
}发布于 2015-06-24 01:03:10
因为我不知道如何解决这个问题,所以我使用了一个简单的defaultTableModel,将数据放在一个数组中,并逐行动态地填充表。这也很简单。感谢您的帮助和评论。
https://stackoverflow.com/questions/30857427
复制相似问题