как и многие другие люди, я хочу, чтобы мой JTable актуализировался после добавления строк. Здесь вы можете увидеть фрагменты моего кода.
ArrayList<> foundR = new ArrayList<FoundResult>();
JTable resultsTable = new JTable();
AbstractTableModel resultsModel = new FoundResultTableModel(foundR);//<- model which contains FoundResults as rows
JScrollPane scroller = new JScrollPane();
resultsTable.setModel(resultsModel);
scroller.add(resultsTable);
this.add(scroller, BorderLayout.CENTER);// a big panel which contains scroller and other components
Затем добавьте ActionListener, который использует следующий метод:
foundR.clear();
foundR.addAll( ...);//<- so the foundR ArrayList is refreshed
resultsModel.fireTableDataChanged();
resultsModel.fireTableStructureChanged();
rowCount результатов Модель показывает, что модель обновилась (количество строк отличается от предыдущего варианта), но таблица по-прежнему не отображается. Я попытался вставить resultsTable.repaint(), но это тоже не помогло.
UDP(NB) Я обнаружил, что проблема сосредоточена в этой панели скроллера.
Если я добавляю таблицу непосредственно на большую панель, она обновляется (но я не вижу всех результатов, так как не могу прокрутить вниз)
this.add(resultsTable, BorderLayout.CENTER);
Если я использую скроллер, ничего не отображается. Ты знаешь почему?
FoundResultTableModel
. - person alex2410   schedule 12.05.2014