java - setValueAt(对象aValue, int row, int col)

标签 java swing jtable multidimensional-array defaulttablemodel

我正在尝试更改 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/

相关文章:

java - Swing 架设置尺寸

java - 使用 JTable 单元格编辑器

java - 为什么模拟的类不会进入未模拟的函数?

java - 检测鼠标指针消失

java - 我如何在 Swing 中捕获此异常?

java - 关于创建游戏菜单我在哪里搞砸了?

java - Java中调用JTable.print()时是否可以设置左右边距的大小?

java - 如何清除jtable中的数据

java - ArrayList<对象> JSON

java - 如何告诉 gradle run 使用自定义工作目录?