我在将行插入JTable
时遇到问题,我不知道问题是什么。
我确实喜欢这样:
((DefaultTableModel)myJTable.getModel()).insertRow(0,webSiteDownloader.getWebSites().toArray());
webSiteDownloader
是一个拥有ArrayList
的对象。我可以让该数组调用方法getWebSites
。
问题在于,当我插入一行,添加第二行时,JTable
仅显示第一行,但重复两次。我清楚了吗?
Thks:D
答案 0 :(得分:3)
我会在黑暗中拍摄并猜测你想要完成这样的事情:
DefaultTableModel dtm = (DefaultTableModel)myJTable.getModel();
for (MyRowObject row : webSiteDownloader.getWebSites()) {
dtm.insertRow(0, row.toArray());
}
是否有特殊原因使用insertRow而不是addRow?
另外,我非常想建议您通过扩展AbstractTableModel来推广自己的专用TableModel。未经测试的基本示例:
public class MyTableModel extends AbstractTableModel
{
protected List<MyObject> rows;
public MyTableModel()
{
rows = new ArrayList<MyObject>();
}
public void add(MyObject obj)
{
rows.add(obj);
}
@Override
public int getRowCount()
{
return rows.size();
}
@Override
public int getColumnCount()
{
// This value will be constant, but generally you'd also
// want to override getColumnName to return column names
// from an array, and in that case you can return the length
// of the array with column names instead
return 2;
}
@Override
public Object getValueAt(int row, int column)
{
MyObject obj = rows.get(row);
// Change this to match your columns
switch(column) {
case 0: return obj.getId();
case 1: return obj.getName();
}
return null;
}
}