我正在尝试更改 defaultTableModel 中的 Object[][] 数据中的值,但在 if (data[i][j] == userFolderName) 处遇到空指针异常
我有尝试将变量更改为“Kathy”,以防万一它没有正确读取用户名,但它仍然抛出异常。你能看一下我的代码并看看哪里出错了吗?
public class Statistics extends JPanel {
public Object[][] data;
public DefaultTableModel model;
public Statistics() {
super(new GridLayout(1,0));
String[] columnNames = {"Name", "Games Played", "Games Won"};
Object[][] data = {
{"Kathy", new Integer(5), new Integer(2)},
{"Steve", new Integer(2), new Integer(0)},
};
model = new DefaultTableModel(data, columnNames);
JTable table = new JTable(model);
table.setFillsViewportHeight(true);
table.setVisible(true);
table.setEnabled(false);
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
public void addRow(Object[] objects) {
model.addRow(objects);
}
public void updateGamesPlayed(String userFolderName, int gamesPlayed) {
int rowCount = model.getRowCount();
int columnCount = model.getColumnCount();
for (int i = 0; i < rowCount; i++){
for(int j = 0; j < columnCount; j++){
if (data[i][j] == userFolderName){
model.setValueAt(gamesPlayed, i, j+1);
}
}
}
}
}
最佳答案
您有两个不同的 data
对象 - 构造函数中的一个全局对象和一个本地对象。如果您在构造函数中将 Object[][] data = {...};
更改为 data = new Object[][]{...};
,它应该因为您只设置本地值,而不是全局值。
关于java - setValueAt(对象aValue, int row, int col),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19537533/