将表添加到滚动窗格时不显示jtable列标识符

iq3niunx  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(378)

我有一个jscrollpane作为私有字段,它是使用默认构造函数初始化的。此窗格应该动态添加一个新表,并在选择另一个表中的行时填充它。
该表将精细地添加行数据并显示,但列标识符不会显示。在表上有一个列表选择侦听器设置,其中的行被选中,这也被称为fine。
scrollforeign是预先初始化的滚动窗格,tablemain是选择表。
代码如下:

public void valueChanged(ListSelectionEvent s) {
    if (s.getSource().equals(tableMain.getSelectionModel())) {
        int caseNo;

        DefaultTableModel jobsModel = new DefaultTableModel(0,0);
        JTable tableJobs = new JTable();
        scrollForeign.add(tableJobs);

        jobsModel.setColumnIdentifiers(new String[] {"jid", "name", "price", "description", "quantity"});
        tableJobs.setModel(jobsModel);
        jobsModel.setRowCount(0);

        jobsModel.addRow(new String[] {"1", "test", "10", "test", "1"});
        jobsModel.addRow(new String[] {"2", "test", "10", "test", "1"});
        jobsModel.addRow(new String[] {"3", "test", "10", "test", "1"});
    }
}

提前谢谢。

t1rydlwq

t1rydlwq1#

不要使用 JScrollPane#add ,使用 JScrollPane#setViewportView 相反
另一方面,不要创建新的 JTable 每次,只需创建模型并将其应用于 JTable 每次。。。

public void valueChanged(ListSelectionEvent s) {
    if (s.getSource().equals(tableMain.getSelectionModel())) {
        int caseNo;

        DefaultTableModel jobsModel = new DefaultTableModel(new String[] {"jid", "name", "price", "description", "quantity"},0);

        jobsModel.addRow(new String[] {"1", "test", "10", "test", "1"});
        jobsModel.addRow(new String[] {"2", "test", "10", "test", "1"});
        jobsModel.addRow(new String[] {"3", "test", "10", "test", "1"});

        tableJobs.setModel(jobsModel);
    }
}

哪里 tableJobs 是示例字段,已应用于 JScrollPane ...

相关问题