我正在尝试创建一个 jTable,一旦单击按钮,一次添加一行,其中只有一个从零开始的数字,并继续添加行直到它到达第 1000000 行。我正在使用 SwingWorker 的 doInBackground,发布和处理方法来增加行计数器并添加每一行,这意味着在添加行时 gui 不会冻结。然而,当运行时,我可以看到行号在增加,但是它只添加一行并不断更改这一行,即一行被添加到表中,并且它的行号增加,所以我最终得到一行,最后有一个数量 1000000。下面是我的 SwingWorker 代码,任何 hep 将不胜感激,这个问题让我彻夜难眠!!:/
//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();