have_to_be 2023-09-12 19:13 采纳率: 59.1%
浏览 5
已结题

为什么jTable中无法展示model中的所有数据?

运行截图(初始状态,没有按按钮)

img

点击“长名称专业”

img

点击“长名称专业”后,点击“所有专业”,除了列宽没有任何其他变化

img

点击“短名称专业”

img

点击“短名称专业”后,点击“所有专业”,除了列宽没有任何其他变化

img

“所有专业”jButton3按钮的功能代码

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
        Vector<Department> allDept = DepartmentDAO.getDepartmentAll();

        // 创建一个表格模型
        DefaultTableModel model = new DefaultTableModel();

        // 添加表头(如果需要)
        model.addColumn("专业编号");
        model.addColumn("专业名称");

        // 将部门数据添加到表格模型中
        for (Department dept : allDept) {
            model.addRow(new Object[]{dept.getId(), dept.getName()});
        }
        
        // 设置表格的数据模型
        jTable1.setModel(model);
}

使用以下代码获取model中存储的数据,没有问题。为什么jTable1中无法展示所有的数据呢?

        int rowCount = model.getRowCount();
        int colCount = model.getColumnCount();

        for (int row = 0; row < rowCount; row++) {
            for (int col = 0; col < colCount; col++) {
                Object cellValue = model.getValueAt(row, col);
                System.out.print(cellValue + "\t"); // 使用制表符分隔列数据
            }
            System.out.println(); // 换行以分隔行数据
        }

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-12 22:53
    关注

    【以下回答由 GPT 生成】

    问题分析: 根据给出的代码和截图,可以初步判断问题出在jTable1的显示上,而不是数据模型的问题。可能是jTable1的列宽度没有正确调整导致部分数据无法显示。

    解决方案: 1. 首先,确保jTable1的自动调整列宽度的属性已经设置为true。可以在代码中添加如下一行代码来设置:

    jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    
    1. 如果第一步没有解决问题,可以尝试手动调整列宽度。可以添加如下一行代码来设置每列的宽度为最适合内容的宽度:
    jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    TableColumnAdjuster tca = new TableColumnAdjuster(jTable1);
    tca.adjustColumns();
    

    需要注意的是,这里使用了自定义的TableColumnAdjuster类来调整列宽度,你需要将这个类导入到你的项目中。

    1. 如果以上方法仍然没有解决问题,可能是因为jTable1的大小限制导致无法完全显示所有的数据。你可以考虑将jTable1放在一个JScrollPane中,这样可以启用滚动条来显示所有的数据。你可以按照以下步骤来实现:
    2. 在代码中创建一个JScrollPane对象,并设置jTable1为其中的视口视图:
    JScrollPane scrollPane = new JScrollPane(jTable1);
    
    • 在你的GUI中添加这个JScrollPane,这样你的jTable1将会以可滚动的形式展示出来。

    如果以上方法都不能解决问题,可能是还有其他因素导致jTable1无法完整显示数据。此时可能需要进一步检查相关代码和属性设置,或者提供更多的信息来帮助我们找到问题所在。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月4日
  • 创建了问题 9月12日