[英]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.