Обновление JTable с использованием TableModel - PullRequest
1 голос
/ 08 августа 2011

Я пытался обновить свой Jtable, но мне кажется, что я каким-то образом путаюсь с концепциями слушателя tableModel и Table Model.

Итак, я создаю таблицу, передавая структуру данных в классе TableModel

public class TasksTableModel extends AbstractTableModel  {
    int[] collect;    
    String[]   columnNames;    
    Object[][] data;    

    public TasksTableModel(int[] collect) {
        this.collect=collect;
        columnNames=new String[]{"Job","Task"}; 
        for(int i=0;i<10;i++) {
           data[i][0]=collect[0];
           data[i][1]=collect[1];
        }
    }
 }    

    public int getRowCount() {
        return data.length;
    }

    public int getColumnCount() {
        return columnNames.length;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        return data[rowIndex][columnIndex];
    }

    public String getColumnName(int col) {
        return columnNames[col];
    }
}

Моя таблица создана в другом классе, как этот TasksTableModel model = new TasksTableModel(tc); tcTable = new JTable(model);

Итак, есть обновление для моего объекта collect [], после которого мне нужно обновить таблицу. До сих пор я устанавливал таблицу на новую TaskTableModel, чтобы обновить, где я теряю любую сортировку на существующей таблице. Как я должен сделай так. Пожалуйста, предоставьте образец кода для моего лучшего понимания.

1 Ответ

1 голос
/ 10 августа 2011

Выполните рефакторинг TasksTableModel, чтобы отделить установку модели от конструктора, например:

public TasksTableModel(int[] collect) {
    columnNames=new String[]{"Job","Task"};
    setModel(collect);
}

public void setModel(int[] collect) {
    this.collect=collect;
    for(int i=0;i<10;i++) {
        data[i][0]=collect[0];
        data[i][1]=collect[1];
    }
}

Затем, когда вы хотите обновить объект collect[], выполните:

model.setModel(collect);
model.fireTableDataChanged();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...