在DefaultTableModel和DefaultTableColumnModel中,都有column和columnCount属性,但是这两个属性是可以不一样的。
假定JTable有x列(JTable使用的是DefaultTableModel和DefaultTableColumnModel),当为JTable动态增加一个列时,我理解这两个Model中的columnCount都应该是a+1,但是,实践证明我错了,DefaultTableModel中是a,DefaultTableColumnModel中是a+1,我查了一下资料,O'REILLY的Java Swing 2确实是这末说的,俩个Model中的这个属性值是可以不一样的,说不必在意,靠,能不在意吗 !? 想请教一下,大家是怎么理解和使用的,也就是当使用这个Model时,我从DefaultTableModel岂不是取不到“准确”的数据? 和大家讨论一下

解决方案 »

  1.   

    DefaultTableModel是表格模型,DefaultTableColumnModel是表格列模型。无论添加还是删除列操作的对象都是DefaultTableColumnModel,自然与DefaultTableModel对象无关,所以DefaultTableModel的列属性不变。>我从DefaultTableModel岂不是取不到“准确”的数据?
    为什么要从DefaultTableModel取呢?我不是很明白您的用意。
    可以从DefaultTableColumnModel中取啊。
      

  2.   

    autowind(一个人住真痛苦) :
    你好,恩,因为数据都存放在DefaultTableModel里面呀,DefaultTableColumnModel只是列信息,那么在动态增加一列后,DefaultTableModel可不认识这列,难道我还要去DefaultTableColumnModel去找那新增加的列?
      

  3.   

    最好自己写个Model extends Default*Model
      

  4.   

    要是需要通过触发列监听器事件通知DefaultTableModel,当然应该是可以的。我只是有点疑惑,Swing既然提供了这种Default实现,那么这个事情我觉得应该是Swing的事,怎么落到程序员的头上了?