如何隐藏DefaultTableModel中的特定列在表中显示?

时间:2012-08-30 11:34:23

标签: java swing jtable swingx defaulttablemodel

我正在使用Java Swingx框架。我的DefaultTableModel对象中有4列。我希望只显示3列。但是,我需要全部四个用于计算。

实际数据模型

S.No. | ID | GDC ID | Decsription

我想在表格中显示

S.No.| GDC ID | Decsription

是否可以隐藏或省略渲染中的一列?请指导我。

5 个答案:

答案 0 :(得分:4)

答案 1 :(得分:4)

无需调整模型,或尝试使该列非常小。 JTable具有内置功能:removeColumn方法。正如该方法的javadoc中所述

  

从此JTable的列数组中删除aColumn。注意:此方法不会从模型中删除数据列;它只是删除了负责显示它的TableColumn。

还要注意以下方法的存在:

由于视图中的列顺序和列数(JTable)可能与模型中的不同,因此需要这些方法在视图和模型之间切换

答案 2 :(得分:2)

您可以通过将其宽度设置为0来隐藏它。

_table.getColumn("ID").setPreferredWidth(0);
_table.getColumn("ID").setMinWidth(0);
_table.getColumn("ID").setWidth(0);
_table.getColumn("ID").setMaxWidth(0);

答案 3 :(得分:1)

尝试删除单个列:

myTableModel = new DefaultTableModel();
myTableModel.setColumnIdentifiers(new Object[]{"S.No.", "ID", "GDC ID", "Decsription"});
JTable myTable = new JTable(myTableModel);

// remember to save the references
TableColumn myTableColumn0 = guiLoteryNumbersTable.getColumnModel().getColumn(0);
TableColumn myTableColumn1 = guiLoteryNumbersTable.getColumnModel().getColumn(1);
TableColumn myTableColumn2 = guiLoteryNumbersTable.getColumnModel().getColumn(2);
TableColumn myTableColumn3 = guiLoteryNumbersTable.getColumnModel().getColumn(3);

myTable.getColumnModel().removeColumn(myTableColumn1);

然后再次显示列保持顺序:

// 1- remove all the existent columns
myTable.getColumnModel().removeColumn(myTableColumn0);
myTable.getColumnModel().removeColumn(myTableColumn2);
myTable.getColumnModel().removeColumn(myTableColumn3);

// 2- add all the columns again in the right order
myTable.getColumnModel().addColumn(myTableColumn0);
myTable.getColumnModel().addColumn(myTableColumn1);
myTable.getColumnModel().addColumn(myTableColumn2);
myTable.getColumnModel().addColumn(myTableColumn3);

抱歉,但这是我所知道的最佳方式。

答案 4 :(得分:0)

您操纵getValueAt,getColumnCount来实现此目的。

例如,你给它的getColumnCount为3

和getValueAt - 如果列索引高于跳过的列

,则跳过

JTable将首先调用getColumnCount和getRowCount,并为每个单元格调用getValueAt。

注意:忽略此信息并在下面通过trashgod查看链接。