10

可能重复:
如何使 JTable 中的列对 Swing Java 不可见
如何隐藏 DefaultTableModel 中的特定列以使其在表中显示?

我正在尝试将数据输入到 JTable 中的三列,但我只想显示两列。实际上,我想隐藏第三列,不是通过将宽度设置为 0,而是通过任何其他可以在单击事件上从隐藏列中获取数据的方法。

如何以这种方式隐藏列?

我正在使用以下代码:

 try {
     String Title[]= new String{"a","b","c"};
     Object obj= new Object[50][3];
     JTable table= new JTable(obj,title);
     JScrollPane jsp= new JScrollPane(table); 
     add(jsp);
 } catch(Exception ex) {
     ex.printStackTrace();
 }
4

1 回答 1

29

将列最小和最大宽度设置为零。

table.getColumnModel().getColumn(columnIndex).setMinWidth(0);
table.getColumnModel().getColumn(columnIndex).setMaxWidth(0);

正如 Andrew Thomson 在评论部分所建议的那样,您也可以使用removeColumn

来自javaDoc;

删除列

public void removeColumn(TableColumn aColumn) 

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

PS:但我个人使用第一种方法在JTable. 感谢您的removeColumn方法,我将从现在开始尝试使用它。

于 2012-12-20T13:58:02.743 回答