java使用setValueAt更新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();
}
抽象表模型为:
公共类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];
}
}
# 1 楼答案
我在评论中给了你答案
您没有实现
setValueAt()
方法,因此什么也没有发生您可以阅读jtableapi,并按照链接到
How to Use Tables
上的Swing教程,在那里您可以找到一个简单的实现或者您可以使用
DefaultTableModel
,它已经为您完成了这项工作