jTable - 如何只显示限制列? Java的

时间:2013-12-17 12:40:43

标签: java swing jtable jdeveloper

这是我在DataAccessLayer中创建表的代码。

private TableModel getResultSetAsDefaultTableModel(ResultSet rs) {

    try {

        String[] columnHeadings = new String[0];
        Object[][] dataArray = new Object[0][0];

        ResultSetMetaData md = rs.getMetaData();
        int columnCount = md.getColumnCount();

        for (int i = 1; i <= columnCount; i++) {
            String columnName = md.getColumnName(i);
            columnHeadings = Arrays.copyOf(columnHeadings, columnHeadings.length + 1);
            columnHeadings[i - 1] = columnName;
        }

        int r = 0;

        while (rs.next()) {

            Object[] row = new Object[columnCount];
            for (int i = 1; i <= columnCount; i++) {
                row[i - 1] = rs.getObject(i);
            }

            dataArray = Arrays.copyOf(dataArray, dataArray.length + 1);
            dataArray[r] = row;

            r++;
        }

        DefaultTableModel dtm = new DefaultTableModel(dataArray, columnHeadings) {
            public boolean isCellEditable(int row, int column) {

                return false;
            }
        };

        return dtm;

    } catch (SQLException ex) {

        Logger.getLogger(Dataaccesslayer.class.getName()).log(Level.SEVERE, null, ex);
    }

    return null;

}

**这导致一些复杂化,因为我的一个表有50个不同的列,因此您无法读取列名或单元格中的内容。

问题是表的值是由元数据确定的......

我想限制显示所有表的特定数字(5)的列。 我该怎么做?**

亲切的问候,

克里斯

2 个答案:

答案 0 :(得分:0)

如果您愿意,可以删除表格。

int amountColumns = table.getColumnModel().getColumnCount(); //count columns
TableColumn c6 = table.getColumnModel().getColumn(6); //identif a random column
table.getColumnModel().removeColumn(c6); //remove this column

我希望有帮助...

答案 1 :(得分:0)

我不会删除它们,而是将它们的大小更改为0.

int amountColumns = table.getColumnModel().getColumnCount(); //count columns
TableColumn c6 = table.getColumnModel().getColumn(6); //identif a random column
table.getColumnModel().setMin(0);
table.getColumnModel().setMax(0);
table.getColumnModel().setPreferredWidth(0);

就像我在你的另一个帖子中回答你一样......