В настоящее время у меня есть JTable, заполненный рядом данных, которые составляют основу экрана импорта. Когда я закончил выбирать, какие обновления я хочу или не хочу, я нажимаю кнопку «Применить», и обновления успешно применяются, но JTable не обновляется полностью.
Это код метода, который имеет дело с применением изменений:
private void doProcessChanges() {
ChangeProcessor cp = new ChangeProcessor();
final List<Integer> rowsToRemove = new ArrayList<Integer>();
BeanTableModel<UpdateModel> model = (BeanTableModel<UpdateModel>) table.getModel();
for (int i=0; i<model.getRowCount(); i++) {
UpdateRow ur = mode.getObject(i);
if (ur.isAccepted() <> ChangeAcceptance.NO_ACTION) {
cp.processChange(ur);
rowsToRemove.add(i);
}
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
for (int row : rowsToRemove) {
model.removeObject(row);
model.fireTableDataChanged();
}
}
);
}
Метод вызывается из потока SwingWorker, как показано ниже:
SwingWorker<Object, Object> worker = new SwingWorker<Object, Object>() {
@Override
protected Object doInBackground() throws Exception {
doProcessChanges();
return null;
}
@Override
protected void done() {
try {
get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
};
Я не получаю никаких исключений при выполнении этого, так что я делаю что-то не так? Заранее спасибо.
publish()
иprocess()
. - person trashgod   schedule 22.01.2013publish()
илиprocess()
. - person Ocracoke   schedule 22.01.2013ur.isAccepted() <> ChangeAcceptance.NO_ACTION
что означает ‹› ? - person vels4j   schedule 22.01.2013