Обновите JTable с помощью setValueAt - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть JTable, созданный из AbstractTableModel.Я успешно инициализирую таблицу на экране.(это только информационная таблица - щелчки отключены) Когда я вызываю setValueAt из объекта JTable, ничего не происходит.

Любая помощь очень ценится!Заранее спасибо.

public void initialiseAuxDataStructure(TableModel table) {
    JTable auxDS = new JTable(table);
    Font f = auxDS.getFont();
    auxDS.setFont(new Font(f.getFontName(), f.getStyle(), f.getSize()+2));
    auxDS.setFocusable(false);
    auxDS.setRowSelectionAllowed(false);

    JTableHeader header = auxDS.getTableHeader();
    f = header.getFont();
    header.setFont(new Font(f.getFontName(), Font.BOLD, f.getSize()+2));

    pnlCenter.add(new JScrollPane(auxDS), BorderLayout.CENTER);
    pnlCenter.revalidate();

}

public void updateTable(String value, int row, int col) {
    auxDS.setValueAt(value, row, col);
    auxDS.revalidate();
}

и модель абстрактной таблицы:

открытый класс TableModel extends AbstractTableModel {

private String[] columnNames;
private Object[][] data;

public TableModel(String[] columnNames, int columns) {
    this.columnNames = columnNames;
    data = new Object[columns][columnNames.length];
    for (int i=0; i<columns;i++) {
        data[i][0] = i;
    }
}

public TableModel(String[] colNames, Object[][] startData){
    this.columnNames = colNames;
    this.data = startData;
}

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

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

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

public Object getValueAt(int row, int col) {
    return data[row][col];
}

}

1 Ответ

4 голосов
/ 02 декабря 2011

Я дал вам ответ в своем комментарии.

Вы не реализовали метод setValueAt(), поэтому ничего не происходит.

Вы можете прочитать JTable API и перейти по ссылке на учебник по Swing на How to Use Tables, где вы найдете простую реализацию.

Или вы можете использовать DefaultTableModel, который уже делает это для вас.

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