重载DefaultTableColumn类的addColumn方法,不将宽度为0的列加到表中。

解决方案 »

  1.   

    表格是使用MVC体系结构,即显示和数据是分开的,因此你把这一列从显示中移掉即可,而数据还是会在模型中的。
    TableColumnModel tcm = table.getColumnModel();
    TableColumn tc = tcm.getColumn(0);
    tcm.removeColumn(tc);
      

  2.   

    to yuanmeng163(今天我有空):
    试了一下,确实如此,但我需要从视图中把隐藏的这一列列值取出来,用这种方法就取不出来了。juhwali(华仔):
    看样子需要重载DefaultTableColumn类的addColumn方法了。
      

  3.   

    已解决,需要添加这个方法。Thank everybody anyway.
           mytable.addComponentListener(new ComponentAdapter() {
               public void componentResized(ComponentEvent e) {
                   hideCol2();
               }
           });
      

  4.   

    做到这些功能没有任何问题,只要记住以下几点就可以:
    1,你必须把你要隐藏的column设置成不可以伸缩,即setResizable(false)
    2,tc.setPreferredWidth(0);
        tc.setMaxWidth(0);
        tc.setMinWidth(0);
    这是必需的,还有就是,有的时候,好像0不是好用,你可以试试
    tc.setPreferredWidth(-1);
        tc.setMaxWidth(-1);
        tc.setMinWidth(-1);
    3,无论你在什么地方使用了你的tableModel,在你setModel之后,一定要调用你的hide方法,不然可能不会有作用的这样以后,你同样可以通过这个隐藏的column取值!
    如果还有问题,send message to me:)