gpt4 book ai didi

java - 扩展 AbstractTableModel 不更新 JTable 中的单元格内容

转载 作者:行者123 更新时间:2023-12-01 14:43:09 26 4
gpt4 key购买 nike

有人可以告诉我为什么我的 JTable没有更新我的下面的模型吗?第一次出现得很好,但是当我输入数组中保存的新数据时 int nh, string hNam, int vh, string proc_1 , string proc_2 ,该表不会使用新数据进行更新。

public class TableModel extends AbstractTableModel {

int numRows;
String columnNames[] = {"NH", "Horse Names", "VH",
"Proc. I", "Proc. II"};
Object[][] myData;

TableModel() {
super();
numRows = fnh;
myData = new Object[fnh][5];

for (int i = 0; i < fnh; i++) {
for (int j = 0; j < 5; j++) {
if (j == 0) {
myData[i][0] = (Integer) nh[i];
} else if (j == 1) {
myData[i][1] = (String) hNam[i];
} else if (j == 2) {
myData[i][2] = (Integer) vh[i];
} else if (j == 3) {
myData[i][3] = (String) proc_1[i];
} else {
myData[i][4] = (String) proc_2[i];
}
}
}
}

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

@Override
public int getRowCount() {
return myData.length;
}

@Override
public String getColumnName(int col) {
return columnNames[col];
}

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

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

if (col == 0) {
return nh[row];
} else if (col == 1) {
return hNam[row];
} else if (col == 2) {
return vh[row];
} else if (col == 3) {
return proc_1[row];
} else {
return proc_2[row];
}
}

@Override
public void setValueAt(Object value, int row, int col) {
myData[row][col] = value;
fireTableCellUpdated(row, col);
}
}

最佳答案

如果您要更新 JTable 中的行并显式使用 setValueAt 而不是仅更改数据中的值。如果您要向 JTable 添加新数据,请在 TableModel 中创建一个方法,并重新创建大小比现有数据数组大 1 的新数据数组,用旧数据填充它,然后添加新数据。然后触发 fireTableRowsInserted(intfirstRow, intlastRow)

关于java - 扩展 AbstractTableModel 不更新 JTable 中的单元格内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15736236/

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