java - 使用 setValueAt 更新 JTable

标签 java swing jtable

我有一个从 AbstractTableModel 创建的 JTable。我已成功初始化屏幕上的表格。 (它只是一个信息表 - 单击被禁用)当我从 JTable 对象调用 setValueAt 时,什么也没有发生。

非常感谢任何帮助! 提前致谢。

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();
}

抽象表模型是:

公共(public)类 TableModel 扩展 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];
}

}

最佳答案

我在评论中给了你答案。

您没有实现 setValueAt() 方法,因此什么也没有发生。

您可以阅读 JTable API 并点击有关如何使用表的 Swing 教程的链接,您将在其中找到一个简单的实现。

或者您可以使用已为您执行此操作的 DefaultTableModel

关于java - 使用 setValueAt 更新 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8358784/

相关文章:

java - JTable 拉伸(stretch)到 ScrollPane 的大小

java - 如何在语句后调用构造函数?

java - NetBeans jTable 不显示

java - 如何在关闭JInternalFrame之前询问 "Are you sure?"?

java - 弹跳球。球有滞后。 repaint() 太慢

java - 访问包含 JTable 的 JScrollpane

java - 数据改变后重新加载 JTable 的 Object[][]

java - TableCellEditor:按下按键清除原始文本;如果没有给出输入则保留值

java - 如何在导致应用程序挂起的 HtmlUnit 2.9 中禁用反向 ajax 轮询?

java - 使用 Proguard 混淆 ActionBarSherlock