Я пытаюсь создать jTable, который, после нажатия кнопки, добавляет строки по одной за раз с числом, начинающимся с нуля, и продолжает добавлять строки, пока не доберется до строки 1000000. Я использую doInBackground SwingWorker's , публиковать и обрабатывать методы для увеличения счетчика строк и добавления каждой строки, что означает, что графический интерфейс не останавливается во время добавления строк. Однако при запуске я вижу увеличение номера строки, однако он добавляет только одну строку и продолжает изменять эту строку, т. Е. Одна строка добавляется в таблицу, а ее номера увеличиваются, поэтому я получаю одну строку в конце с номер 1000000. Ниже приведен мой код 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();