gpt4 book ai didi

java - jtable 自定义模型

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

我正在努力实现 jTable。我创建了自己的 TableModel 类。这就是问题所在。不知何故,我的 tableData 数组(Obejct[] 的 ArrayList)没有被正确写入。最后我得到一个表,其中所有行都有值。

有没有人明白为什么 ArrayList 写得不正确?

class MyTableModel extends AbstractTableModel {
private String[] columnNames = {"Auftragsnummer",
"Kunde",
"Kunden Nr.",
"Erfasst",
"Kommt",
"Geht",
"Kommentar"};

String[] temp_delete = new String[10];
int index_delete = 0;

private ArrayList<Object[]> tableData = new ArrayList<Object[]>();

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

public int getRowCount() {
return tableData.size();
}

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

public Object getValueAt(int row, int col) {
Object [] temp = tableData.get(row);

return temp[col];
}

public void removeAllEntry(){
for (int i = 0; i < tableData.size(); i++) {
tableData.remove(i);
}
model.fireTableDataChanged();
}

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


public boolean isCellEditable(int row, int col) {

switch (col){
case 4:
return true;
default: return false;
}
}

public void addText(Object[] object) {
tableData.add(object);

fireTableDataChanged();
}

最佳答案

setValueAt() 的父实现什么也没做。您需要实现 setValueAt()更新您的内部数据结构,tableData , 并触发适当的 TableModelEvent ,这将更新您的 View 。

    @Override
public void setValueAt(Object aValue, int row, int col) {
... // update tableData
this.fireTableCellUpdated(row, col); // notify the view
}

顺便说一句,考虑List<List<Object>>而不是 ArrayList<Object[]> .

关于java - jtable 自定义模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11394916/

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