Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中更改表模型中单元格的值?_Java_Swing - Fatal编程技术网

如何在Java中更改表模型中单元格的值?

如何在Java中更改表模型中单元格的值?,java,swing,Java,Swing,我创建了一个继承自AbstractTableModel的类。我想重写setValueAt(),以便它将行r和列c中的单元格值更改为多维数组v。但我总是出错 public class ItemListTableModel extends AbstractTableModel{ public void setValueAt(Object v, int r, int c) { rowData[r][c] = v;// This is where the error is. fir

我创建了一个继承自AbstractTableModel的类。我想重写setValueAt(),以便它将行
r
和列
c
中的单元格值更改为多维数组
v
。但我总是出错

public class ItemListTableModel extends AbstractTableModel{

public void setValueAt(Object v, int r, int c) {  
    rowData[r][c] = v;// This is where the error is.
    fireTableCellUpdated(r, c);  
}  

@Override
public int getRowCount() {

}

@Override
public int getColumnCount() {

}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {

}

public boolean isCellEditable(int row, int col){ 
    return true; 
}  

}

AbstractTableModel
并没有模型内容的概念,也并没有模型的管理方式,这就是重点。它允许开发人员根据自己的复杂需求设计自己的模型

一个更简单的解决方案是使用
DefaultTableModel
,它提供了所有现成的功能

DefaultTableModel model = new DefaultTableModel(rows, columns); // you need to define rows and columns for yourself
model.setValueAt(row, column, value); // Again, you need to define the variables for your self
如果您“绝对”需要一个基于
AbstractTableModel
的自定义表模型,那么您需要自己提供用于在给定行/数据中存储数据的存储机制


通常,我会定义一个表示行的POJO,然后将它们添加到某种类型的
列表中,因为它提供了一种简单的机制,用于在类中增长和收缩模型,您还没有声明
行数据的类型。它可能是一个2x2
int
数组,但您尚未声明它,因此编译器无法找到标识符。您要做的是首先声明
rowData
like

int[][] rowData = new int[r][v];

然后,您可以正常地将
v
分配给
rowData

使用
AbstractTableModel::setValueAt()
的示例


用精确的错误/输出详细说明您的问题。哪些方面?什么是以及如何声明的
rowData
?我的IDE说它“找不到符号”在哪里(你的IDE是这样说的),什么行?在rowData上[row][col]=value;
    class MyTableModel extends AbstractTableModel {

        private final String[] columnNames = new String[]{"Col One", "Col Two"};
        private final Object[][] data = new String[][]{new String[]{"R1C1", "R1C2"}, new String[]{"R2C1", "R2C2"}};

        @Override
        public void setValueAt(Object value, int row, int col) {
            data[row][col] = value;
            fireTableCellUpdated(row, col);
        }
......
rest of the code