gpt4 book ai didi

java - JTable 的 setValueAt() 方法不更新单元格数据

转载 作者:行者123 更新时间:2023-12-01 13:39:34 25 4
gpt4 key购买 nike

我使用抽象表模型创建了一个 JTable。该表有一个整数对象数据的二维数组和一个一维列标题。一切正常,除了当我在程序运行时编辑和更改单元格数据时,它会恢复为默认值(使用 getValueAt() 创建)。我已经实现了抽象表模型 setValueAt() 方法,但它不起作用。

谁能告诉我我的代码有什么问题吗?

    import javax.swing.table.AbstractTableModel;

public class TableModel1 extends AbstractTableModel {
/**
*
*/
private static final long serialVersionUID = 1L;


String [] colNames=new String[30];
Object[][] data= new Integer[4][30];


@Override
public int getColumnCount() {
return colNames.length;
}

@Override
public int getRowCount() {
return 4;
}


public String getColumnName(int col){

if (col==0){
colNames[0]="Boarders";
}

else if(col>0){
for(int i=1;i<colNames.length;i++){
colNames[i]=new String(""+i);
}
}
return colNames[col];
}


@Override
public Object getValueAt(int row, int col) {


for(int i=0; i<data.length;i++){
for(int j=0; j<data[i].length;j++){
data[i][j]=new Integer(1);
}
}
return data[row][col];
}


public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}


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

public void setValueAt (Object aValue, int row, int col){

data[row][col]=(Integer)aValue;
fireTableCellUpdated(row,col);

}

}//end class

最佳答案

似乎会发生这种情况,因为当调用 getValueAt() 方法时,您总是用下一行刷新数组中的数据:

for(int i=0; i<data.length;i++){
for(int j=0; j<data[i].length;j++){
data[i][j]=new Integer(1);
}
}

因此,请从 getValueAt() 方法中删除此行,并仅在模型的构造函数中初始化数组一次,而不是像现在一样每次都初始化。

关于java - JTable 的 setValueAt() 方法不更新单元格数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20938806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com