gpt4 book ai didi

java - 在没有 getValueAt() 并发症的情况下修剪 AbstractTableModel

转载 作者:行者123 更新时间:2023-11-29 03:47:55 24 4
gpt4 key购买 nike

有没有一种方法可以从完整的 AbstractTableModel 派生出经过修剪的 AbstractTableModel 而无需 getValueAt() 复杂性?

我的完整数据(包括 userIds)被加载到 JTable AbstractTableModel 中。但是,出于显示目的,我希望导出与特定 userId 相关联的数据的经过修剪的 AbstractTableModel。

我开始认为这是不可能的,因为 getValueAt 介入并抛出 IndexOutOfBounds 异常?这些异常似乎是因为修剪后的数据未填充。

public class PrunedUserIdTableModel extends AbstractTableModel {

TableModel fullModel;
List columnIdentifiers;
List tempDatum;
List tempData; // holds tempDatums
int rowCount; // reports pruned rowCount through getRowCount() method
List prunedData; // intended to hold data of matched userId rows

public PrunedUserIdTableModel(JTable fullTable, String userId) {
fullModel = fullTable.getModel();
columnIdentifiers = new ArrayList();
tempDatum = new ArrayList();
tempData = new ArrayList();
rowCount = 0;

List<Integer> userCount = new ArrayList<>();

// Load columnIdentifiers from fullModel; omitted here

// Go through fullModel searching for rows with matching userIds

for (int i = 0; i < fullModel.getRowCount(); i++) {
for (int k = 0; k < fullModel.getColumnCount(); k++) {
tempDatum.add(fullModel.getValueAt(i,k);
if ((fullModel.getValueAt(i,k).equals(userId)) {
// Matching userId found; record relevant row
userCount.add(g);
}
}
tempData.add(tempDatum);
tempDatum.clear();
}

// Now populate prunedData
for (int j = 0; j < userCount.size(); j++) {
prunedData.add(tempData.get(userCount.get(j)));
rowCount=rowCount+1;
}

fireTableChanged(null);
}
@Override
public int getRowCount() {
return rowCount;
}
@Override
public int getColumnCount() {
return fullModel.getColumnCount();
}
@Override
public int getValueAt(int rowIndex, int columnIndex) {
// THROWS INDEX OUT OF BOUNDS EXCEPTION: Index 0; size 0
List rowList = (List)prunedData.get(rowIndex);
return rowList.get(columnIndex);
}
}

最佳答案

使用 TableRowSorter 过滤您的 JTable 行以仅显示您想要的行。然后,当您通过索引引用某些内容时,请务必调用 convertRowIndexToViewconvertRowIndexToModel

关于java - 在没有 getValueAt() 并发症的情况下修剪 AbstractTableModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10070694/

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