Обновление 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);
    }
}

Здесь есть связанный пример.

Другие вопросы по тегам