gpt4 book ai didi

java - 如何将ArrayList放入AbstractTableModel中?

转载 作者:行者123 更新时间:2023-12-02 08:57:11 25 4
gpt4 key购买 nike

我有一个ArrayList<String[]> data我将值放入程序中的不同点,我将其设为扩展 AbstractTableModel 的 MyTable 变量。但我不知道如何将其放入表中。

我之前放了一个String[][]到表中,但我不确定这如何与 ArrayList 类一起使用。

对于getRowCount()我可以newStringArr.lengthgetColumnCount我可以newStringArr[0].lengthgetValueAt(int row, int column)我可以回newStringArr[row][column]对于String[][]类型。对于 ArrayList 来说,这些函数等于什么? ?

最佳答案

Here是一个使用 AbstractTableModel 的好例子。在您的情况下,MyTable 可以定义为:

class MyTable extends AbstractTableModel {
private final int numRows;
private final int numColumns;

private List<String[]> data = new ArrayList<String[]>();

public MyTable(int numColumns, int numRows) {
this.numColumns = numColumns;
this.numRows = numRows;

init();
}

public int getColumnCount() {
return data.get(0).length;
}

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

public Optional<String> getValueAt(int row, int col) {
if(isNotValidEntry(row, col)) {
throw new RuntimeException("Out of bound row or col");
}

return Optional.ofNullable(data.get(row - 1)[col -1]);
}

public void setValueAt(String value, int row, int col) {
if(isNotValidEntry(row, col)) {
throw new RuntimeException("Out of bound row or col");
}

data.get(row - 1)[col - 1] = value;
fireTableCellUpdated(row, col);
}

private void init() {
IntStream.range(0, numRows)
.forEach(r -> data.add(new String[numColumns]));
}

private boolean isNotValidEntry(int row, int col) {
return numRows <= row - 1 || numColumns <= col - 1;
}

}

关于java - 如何将ArrayList放入AbstractTableModel中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60421624/

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