//隐藏列
jtable.getColumnModel().removeColumn(jtable.getColumnModel().getColumn(col));
要获得这一列数据,假设是DefaultTableModel的模型
((DefaultTableModel)jtable.getModel()).getValueAt(row,col);

解决方案 »

  1.   

    在TableModel中不要加入这一列的值,要不你把这一列的宽度设为一个很小的值
    而后在
    如下所示:
          public String getColumnName(int col) 
    {
    if(col == 3)
    {
    return "";
    }
    else
    {
                return columnNames[col];
    }
            }        public Object getValueAt(int row, int col) 
    {
    if(col == 3)
    {
    return "";
    }
    else
    {
                return data[row][col];
    }
            }
      

  2.   

    各位兄长:万分感谢您的回复!
    特别感谢: zhouwj(阿杰) 兄。您好,我的代码和您的代码基本上一致。我用的方式和您的几乎一样。
     我在实现 TableCellRenderer的时候,写的不正确,
         Object obj=table.getValueAt(row, column+1);////错     
     正确的应该是您的那样:
         obj=table.getModel().getValueAt(row,column+1);///正确,请注意这里的getModel()。 因为当调用jtable.getColumnModel().removeColumn(jtable.getColumnModel().getColumn(col));后,用     Object obj=table.getValueAt(row, column+1);取不到那个已经被删除的列的数值。
    我的分析:jtable对象中,不存在这个列了。所以去不到了。
             但是在数据模型中,这个列的数值是存在的,因此应该在数据模型对象的中得到这个数值。因此就要用到table.getModel().getValueAt(row,column+1)。
         请注意这里的getModel()方法。谢谢您。另外谢谢weimenren的提供的方法。我认为zhouwj(阿杰) 更胜一筹。
    我觉得zhouwj(阿杰) 的方法,是很值得深味的,这也是我要提高的。
    通过你们的回答,我能体会到:程序员应该提供什么样的解决方案。
    这个例子是一个很好的对比。请原谅我的卖弄。我抱着共同提高,学习的态度,写了我的体会。
    谢谢大家。希望:不知道zhouwj(阿杰) 能否告知您的邮件。我想问您关于自我学习的
    问题、以及可以买的java参考书,希望您能联系我。.今年初,我差点被开除。我很努力的。但是一直水平不好。也许,我的方法一直不对。
    我希望以后能够改观。至此,再次感谢,所有答复的朋友。
    如果需要我的代码。我可以附上。或者用邮箱来通知我。
    祝愿所有的程序员快乐。
    花些时间去思考,看看我们的做事方法。
    上面的两个回复,是很好的对比。至少告知,我们应该如何做事情。
    我会把我的代码整理好之后,附上。
    zhouwj(阿杰)兄,希望您看到贴子后,能够与我联系。祝福各位。