В приложении My Swing есть таблица, которая заполняется, когда некоторые данные извлекаются из внешнего источника.Для отображения данных я использую поток SwingWorker, который вызывается из потока, который должен извлекать данные следующим образом:
// SwingWorker Thread
private class DisplayRowsTask extends SwingWorker<Void, Object[]> {
private Vector<String[]> _data;
@Override
protected Void doInBackground() {
while (_continue && !hasError()) {
// some logic to fetch and place data in _data
// data adjustment
for (String[] row : _data) publish (row);
_data = new Vector<String[]>();
}
return null;
}
@Override
protected void process(List<Object[]> rows) {
for (Object[] row : rows) ((DefaultTableModel)_table.getModel()).addRow(row);
}
}
Отображаемые результаты верны, и все отлично работает, за исключением того, что загрузка ЦП100% (и более!), Особенно в ситуации, когда часто выбирается много данных.Как я могу ограничить это использование?
Другой вопрос, возможно, не полностью связанный: как я могу узнать, отображаются ли данные в таблице?Метод "SwingWorker.isDone ()" не предоставляет эту информацию