如何在Java中更改表模型中单元格的值?
我创建了一个继承自AbstractTableModel的类。我想重写setValueAt(),以便它将行如何在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
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,然后将它们添加到某种类型的
列表中,因为它提供了一种简单的机制,用于在类中增长和收缩模型,您还没有声明行数据的类型。它可能是一个2x2int
数组,但您尚未声明它,因此编译器无法找到标识符。您要做的是首先声明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