ボタンがクリックされると、ゼロから始まる数字だけで一度に1行ずつ追加し、1000000行になるまで行を追加し続けるjTableを作成しようとしています。私はSwingWorkerのdoInBackground、publishおよび行カウンターをインクリメントし、各行を追加するメソッドを処理します。これは、行が追加されている間、GUI がフリーズしないことを意味します。ただし、実行すると、行番号が増加するのがわかりますが、1行しか追加されず、その1行が変更され続けます。つまり、1行がテーブルに追加され、その行番号が増加するため、最後に1行になり、以下は私のSwingWorkerコードです。どんなヘルプでも大歓迎です。この問題は私に眠れない夜を与えています!! :/
//inside the button's ActionPerformed method
SwingWorker<Vector, Vector> worker = new SwingWorker<Vector, Vector>() {
@Override
protected Vector doInBackground()
{
int i = 0;
Vector v = new Vector();
//while(!isCancelled())
while(i < 100000000)
{
v.clear();
//v = gen.runAlgorithm2();
v.add(i);
i++;
publish(v);
}
return v;
}
@Override
protected void process(List rowsList)
{
if(rowsList.size() > 0)
{
Vector row = (Vector)rowsList.get(rowsList.size() - 1);
DefaultTableModel tModel = (DefaultTableModel)jTable1.getModel();
//tModel.insertRow(0, row);
tModel.addRow(row);
}
}
};
worker.execute();