我想在表中隐藏一列数据,不是Remove掉,因为这列数据我还想用就是不想在界面上看到
那位高手指点一下

解决方案 »

  1.   

    你不将它SELECT出来不就行了吗?
      

  2.   

    你不将它SELECT出来不就行了吗?
      

  3.   

    //隐藏第一列
    TableColumn column = table.getColumnModel().getColumn(0);
    table.getColumnModel().removeColumn(column);
      

  4.   

    一般来说真正用来存储操作数据的object是自己定义的,只有在显示出来的时候才调用jtable的setModel把数据放进去。那么在你将数据放入dataModel的时候,不要把这一列放进去就行了,你的dataModel在定义的时候就应该少一列
      

  5.   

    前阵子也做过类似楼主的jtabel
    按楼主说的,用模型可以实现,关键是你如何封装表的数据EntityTableColumn column;
    column = new EntityTableColumn("状态",new String().getClass(),38,new XTableCellRendere());
    column.setLocked(true); //锁定标志列
    column.setEditable(false); //标志列不可编辑
    column.setHeaderRenderer(new XTableHeadRenderer());
    addColumn(column); //第一列为标识列
    int width=0; //column宽度
    Class columnClass=null; //column类型
    TableCellEditor cellEditor = null; //编辑器
    TableCellRenderer cellRenderer = null; //绘制器
    Document doc = null; //模型
    for (int i = 0; i < _packTb.getFieldCount(); i++) { //每个字段为一列,并设置column的编辑器 的类型
    width = Integer.parseInt(xface.getColumnWidth());
    /* ???设置控件显示长度*/
    if (width == 0) width = 55;
    else width *= 4;
    columnClass = _packTb.getTypeClass(i);
    if (_packTb.getFaceCode(i).equals("defaultComboBox")){ //下拉框
              XButton.XComboBox combo = (XButton.XComboBox)XFace.getComboBoxCellEditor(_packTb.getTb().getView(),i);
              XTextFieldCellRenderer text = new XTextFieldCellRenderer(null,"",18);
              cellEditor = combo;
              cellRenderer = text;
              _packTb.setComboBoxModel(i,combo.getModel());
              column = new EntityTableColumn(_packTb.getName(i),columnClass,width,cellEditor,cellRenderer);
            }else{
              cellEditor = new XTextFieldCellEditor(null,"",18,columnClass);
              doc = ((JTextField)cellEditor).getDocument();
              _packTb.setEditorDocument(i,doc);
              cellRenderer = new XTextFieldCellRenderer(null,"",18);
              doc = ((JTextField)cellRenderer).getDocument();
              _packTb.setRendererDocument(i,doc);
              column = new EntityTableColumn(_packTb.getName(i),columnClass,width,cellEditor,cellRenderer);
            }
            column.setHeaderRenderer(new XTableHeadRenderer());
            /* column属性设置*/
            column.setEditable(_packTb.isEditable(i)); //编辑
            column.setHidden(_packTb.isHidden(i)); //隐藏
            column.setLocked(_packTb.isLocked(i)); //锁定
            column.setSortable(_packTb.isSortable(i)); //排序
            addColumn(column);
      

  6.   

    在JTable的子类中加一个hideColumn()方法  
    public  void  hideColumn(int  index)  
               {  
                           TableColumn  tc  =  this.getColumnModel().getColumn(index);  
                           tc.setMaxWidth(0);  
                           tc.setPreferredWidth(0);  
                           tc.setWidth(0);  
                           tc.setMinWidth(0);  
                             
                           this.getTableHeader().getColumnModel().getColumn(index).setMaxWidth(0);  
                           this.getTableHeader().getColumnModel().getColumn(index).setMinWidth(0);  
               }  
    hideColumn(0)就是隐藏第一列