2

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

实际数据模型

S.No. | ID | GDC ID | Decsription

我想在表格中显示什么

S.No.| GDC ID | Decsription

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

4

5 回答 5

4
于 2012-08-30T11:41:42.837 回答
4

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

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

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

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

于 2012-08-30T12:07:50.677 回答
2

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

_table.getColumn("ID").setPreferredWidth(0);
_table.getColumn("ID").setMinWidth(0);
_table.getColumn("ID").setWidth(0);
_table.getColumn("ID").setMaxWidth(0);
于 2012-08-30T11:37:04.073 回答
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);

对不起,但这是我所知道的最好的方式。

于 2015-01-27T12:49:29.553 回答
0

您操纵 getValueAt , getColumnCount 来实现这一点。

所以例如你给它的getColumnCount 3

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

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

注意:忽略这一点,请参阅下面的垃圾神链接。

于 2012-08-30T11:38:21.237 回答