当表添加到scrollpane时,JTable列标识符不显示

时间:2015-01-15 02:04:32

标签: java swing jtable jscrollpane defaulttablemodel

我有一个JScrollPane作为使用其默认构造函数初始化的私有字段。此窗格应该动态添加新表,并在选择另一个表中的行时填充它。

该表可以很好地添加行数据并显示但列标识符不会显示。在表上有一个列表选择侦听器设置,其中选择了行,并且也被称为罚款。

scrollForeign是preitalitalized scrollpane,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"});
    }
}

提前致谢。

1 个答案:

答案 0 :(得分:2)

请勿使用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 ...