You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用List<NftDTO>填充JTable仅显示48条,如何显示全部68条?

解决JTable无法显示全部NftDTO数据的问题

核心问题排查与修复步骤

1. 修正TableModel初始化逻辑

你当前代码预先创建了4个空行,后续删除前2行的操作会干扰数据行统计,直接初始化空模型即可:

// 替换原模型初始化代码
String[] columsName = new String[] { "Nu.","Name", "Collection name", "royalties", "website" };
DefaultTableModel model = new DefaultTableModel(columsName, 0); // 初始行数为0,直接传入列名

2. 移除JTable固定尺寸限制

设置setPreferredSize会限制表格高度,超出部分无法显示,必须将表格放入JScrollPane实现滚动:

nftTable = new JTable(model);
nftTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); // 优化列自适应
// 把表格放入滚动面板,后续将滚动面板添加到窗口
JScrollPane tableScrollPane = new JScrollPane(nftTable);

3. 确保序号生成逻辑正确

如果countNft()是生成行号的方法,避免内部逻辑错误导致序号异常,建议直接在循环内用索引计数:

int rowNum = 1;
for (NftDTO nft : nfts) {
    if(nft.getNftUrl() == null) {
        nft.setNftUrl("there is no URL");
    }
    model.addRow(new Object[] { rowNum++, nft.getNftName(), nft.getColletionName(), nft.getRoyalties(), nft.getNftUrl() });
}

4. 验证数据是否完整添加

循环结束后打印模型行数,确认数据是否全部加入:

System.out.println("模型总行数:" + model.getRowCount());

如果输出是68,说明是显示问题(未用滚动面板);如果是48,需检查obtainNftAccount方法返回的列表是否真的包含68个有效对象。


内容的提问来源于stack exchange,提问作者francesco14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:54:29