Обновление JTable, когда данные изменились
У меня проблема с обновлением JTable
, Я начинаю с пустого ArrayList
и после установки моего поля со списком я загружаю контент в ArrayList
но JTable
не реагирует на это - остается пустым. Это проблема с TableModel
?
Это мой код...
public class ProjectTableModel extends AbstractTableModel{
private static final long serialVersionUID = 1L;
private static ArrayList<String> caseList = new ArrayList<String>();
@Override
public int getColumnCount() {
return 1;
}
@Override
public int getRowCount() {
return caseList.size();
}
@Override
public Object getValueAt( int row , int col) {
getRowCount();
switch(col){
case 0:
System.out.println("mam to");
return caseList.get(row);
}
return null;
}
public void setCaseList(String[] list){
for (int i =list.length - 1; i >= 0; i--) {
caseList.add(list[i]);
}
System.out.println(getRowCount());
fireTableDataChanged();
}
public String setValueAt(int row, int col){
return null;
}
public void addTestCase(String name) throws IOException{
File newDir = new File(TestCaseMaker.currentDir,
"Przypadek testowy"+(caseList.size()+1));
newDir.createNewFile();
caseList.add(name);
fireTableDataChanged();
}
public String getColumnName(int col) {
return "Przypadki testowe";
}
}
1 ответ
Ваша реализация setValueAt()
это неверно. У него неправильная подпись, и он не уведомляет свою точку зрения.
Приложение: Мой JTable
не реагирует ни на какие изменения в модели данных
Для справки, EnvTableTest
это пример использования AbstractTableModel
это исключает редактирование; реализация по умолчанию isCellEditable()
всегда возвращается false
,
@Override
public void setValueAt(Object aValue, int row, int col) {
if (col == 1) {
System.out.println("setValueAt: " + row + " " + aValue);
// update caseList here
this.fireTableCellUpdated(row, col);
}
}
Здесь есть связанный пример.