gpt4 book ai didi

java 。 JTable setValueAt 数据不更新

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:56 28 4
gpt4 key购买 nike

我尝试使用 JTable,但是当我调用 setValueAt 方法时,数据不会在 gui 中更新。我试图在超过 5 个小时的时间内找到答案,但任何东西都对我有帮助。

我尝试更新 UI 和 fireTableDataChanged() 但 id 没有帮助。

我使用 AbstractTableModel,我的构造函数是 JTable(MemoryTableModel)。看我的MemoryTableModel代码:

我做错了什么,或者我忘记了什么?

(对不起我的英语,它不是我的母语)

public class MemoryTableModel extends AbstractTableModel {

private static final long serialVersionUID = 1L;
ArrayList<ArrayList<Object>> memoryCells;
String[] columnNames = {"Offset", "0", "1", "2", "3", "4", "5", "6", "7", "8",
"9", "A", "B", "C", "D", "E", "F"};

public MemoryTableModel(byte[] data, int cells) {
super();
memoryCells = new ArrayList<ArrayList<Object>>();
for (int i=0; i< cells/16; i++) {
ArrayList<Object> a = new ArrayList<Object>();
a.add(i);
for (int j=0; j<16; j++) {
a.add(data[i*16+j]);
}
memoryCells.add(a);
}
}

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

@Override
public int getRowCount() {
return memoryCells.size();
}

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

@Override
public Object getValueAt(int line, int column) {
return memoryCells.get(line).get(column);
}
@Override
public void setValueAt(Object cell, int row, int column) {
memoryCells.get(row).set(column, cell);
fireTableDataChanged();
}

public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == 0)
return false;
return true ;
}

最佳答案

  • 您的 fireTableDataChanged(); 通知程序 setValueAt(Object cell, int row, int column) { 是错误的

  • 您需要使用 fireTableCellUpdated , 更多链接 API

  • 使用DefaultTableModelVectorutil.List 作为AbstractTableModel 的底层数组的更简单解决方法>

编辑

  • public boolean stopCellEditing() { 很常见的问题,我希望有类似 JTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);/li>

关于 java 。 JTable setValueAt 数据不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18693555/

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