私は暗闇の中にショットを取ると、あなたはこのような何かを達成したいと思います:
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;
}
}
Icky code非標準の書式設定。保護された。最後の行方不明。宣言行でコンストラクタを実行できるときのコンストラクタでの初期化。返されるものもあれば、スイッチで処理されないものもあります。例外をスローするのではなく、ランダム( 'null')値を返します。 @Overrideがありません。 –
フィードバックいただきありがとうございます。ちゃんと覚えておきますよ。 :) –
AbstractTableModelから継承したfireXxxxEvent()メソッドを呼び出さないと、TableModelは機能しません! add()の呼び出しは、JTableをリフレッシュしません! – jfpoilpret