[英]Adding a row to JTable
怎么了?
我懷疑TableModel
沒有列 - 添加到表的ColumnModel
但沒有添加到TableModel
的列。 至少將其列數設置為 4。
我還強烈建議在創建表之前創建 model ( DefaultTableModel
),因此它可用於創建表 - 無需向表中添加列。 更好地使用自己的 model,擴展AbstractTableModel
- 提供更好的控制(主要用於非平凡的情況)。
自己的 model 示例(最小):
class FileInfoModel extends AbstractTableModel {
private final String[] columns = {"", "Name", "Size", "Date"};
private final List<FileInfo> data = new ArrayList<>();
@Override
public int getColumnCount() {
return columns.length;
}
@Override
public String getColumnName(int col) {
return columns[col];
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public Object getValueAt(int row, int col) {
FileInfo info = data.get(row);
switch (col) {
case 0: return info.getFileType();
case 1: return info.getFileName();
case 2: return info.getFileSize();
case 3: return info.getLastModified();
default: throw new IllegalArgumentException("col: " + col);
}
}
public void addInfo(FileInfo info) {
if (data.add(info)) {
var row = data.size() - 1;
fireTableRowsInserted(row, row);
}
}
}
不需要擴展表,只需使用上述 model 實例的new JTable(model)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.