***散分求助--如何是jTable的某一列数据隐藏invisible,但是在数据还可以取出来? 如何使jTable的某一列数据隐藏invisible,但是在数据还可以取出来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么要隐藏呢,你另外设定一个和jtable一一对应的二维数组,然后根据jtable里面选了哪一行哪一列,去对应的数组李拿出来不就行了 我的jTable里面的数据是从数据库里面动态读进去的,不是预先定好的,与jTable数据一一对应的是一个tableData_Vector,而它又是由rowData_Vector组成的,所以数据取的时候有点麻烦,又不能倒到二维数组里面; 因为jTable里面显示的数据有一个字段的值是interid,是数据库表的关键字,是不希望客户看见的,而在客户双击某条记录进行修改等操作的时候,还要用这个interid到数据库里面修改对应的记录 所以我希望这个interid能够是表中的一列,到时候用jTable1.getValueAt()来取出interid的值,而不希望客户看见,所以我希望这一列可以隐藏掉,但是TableColumnModel 和jTable 都没有这个Visible(boolean )这个函数,我试着把这一列的最大宽度设为0,但在jTable的界面上仍然看得见这一列,所以郁闷呀 请各位大侠多多帮忙!分不够可以加的! 自己扩展AbstractTableModel,里面封装你的数据实现重写里面的getValueAt, getRowCount然后初始化JTable的时候用你自己这个TableModel典型的用MVC解决的问题 我做 JTable 的东西时一般都用个 Vector 做缓存。Vector 里面每项是代表一行的 数组,不是 Vector隐藏一行我是直接删掉它,反正数据在 Vector 里要再显示时只要从 Vector 里提取那行的 数组,再插入到 JTable 里我觉得这应该不算难啊 建议你做个数据中转处理吧。比如,你建立两个DataModel,A 和B,A用来做显示用。B用来做存放真实数据的地方。 既然做数据缓存处理那后台用 JTable 是不是麻烦?用 Vector 或其它更直接的存储方法岂更简单? 仔细看了你的需求:)楼上所有人的回答与解决都是错误的。包括我刚才提供的解决方案。:)你问题的主要矛盾在:“你非要用jTable1.getValueAt()来取数值,”而同时,又“不让这列数值显示在界面上”。这两个要求是永远不可能同时得到满足的。因为JTable.getValueAt()提供的是“界面显示上”某列某行的数值。取出的前提就是“他已经被显示了”。JTable属于swing组件。swing大量采用MVC结构,JTable是专负责显示用的。与数据存储无关。真正的数据存储在TableModel内。所以,你必须更换你的策略:“所以我希望这个interid能够是表中的一列,到时候用jTable1.getValueAt()来取出interid的值,而不希望客户看见,” 比较好的解决办法是:1.主键列单独保存。其他数据放在TableModel内,你自己写个TableModel。2.保存现在数据结构不动,扩展TableModel,自己筛选数据。如;public class MyTableModel extends javax.swing.table.AbstractTableModel,重写方法: public int getColumnCount()和 public Object getValueAt(int row,int column) 有必要重载 public int getColumnCount(){} 吗?为什么? 试了一把,原来这个ColumnCount这么重要呀?我设成4,准备不出现的那一列立马就出来了,这个返回值是几列,表里面就出现几列? 飞约兄,真的假的呀?分数要那么多又不能当钱花,^_^ 兄弟是高手,提出来的见解都很不同凡响呀 不过兄弟对我的帮助可比这300分有价值多了,谢谢,真的很感谢兄弟能够这么认真,这么严谨的提出解决方案!令小弟佩服,佩服!小弟发短信总算没有问错人,谢谢! 放心,小弟还有4000多分,兄弟还有好多问题要问的,兄弟又是高手,不愁分数不漫漫转移到你哪里的! 兄弟有QQ吗?QQ多少?交个朋友吧 eclipse中的设置全都正确,但是泛型的强转报错 请教关于泛型与类型转换 replaceAll怎么使用呢 中文编码问题。求助 问个菜鸟问题,关于加载图片,多多指教 equalsIgnoreCase() 这个方法是什么意思? 新手,请多指教!在线等待.......... 一个排序问题,感觉找不到规律啊 关于Forte ****JBuilder有点不方便!!!**** 子类覆盖父类方法问题 ,实在是糊涂了 一个import.*的问题 小散分:有奖问答,题目见内
里面封装你的数据实现
重写里面的getValueAt, getRowCount然后初始化JTable的时候用你自己这个TableModel典型的用MVC解决的问题
比如,你建立两个DataModel,A 和B,
A用来做显示用。
B用来做存放真实数据的地方。
那后台用 JTable 是不是麻烦?
用 Vector 或其它更直接的存储方法岂更简单?
楼上所有人的回答与解决都是错误的。
包括我刚才提供的解决方案。:)你问题的主要矛盾在:“你非要用jTable1.getValueAt()来取数值,”而同时,又“不让这列数值显示在界面上”。
这两个要求是永远不可能同时得到满足的。
因为JTable.getValueAt()提供的是“界面显示上”某列某行的数值。取出的前提就是“他已经被显示了”。JTable属于swing组件。swing大量采用MVC结构,JTable是专负责显示用的。与数据存储无关。真正的数据存储在TableModel内。所以,你必须更换你的策略:“所以我希望这个interid能够是表中的一列,到时候用jTable1.getValueAt()来取出interid的值,而不希望客户看见,”
1.主键列单独保存。
其他数据放在TableModel内,你自己写个TableModel。
2.保存现在数据结构不动,扩展TableModel,自己筛选数据。
如;
public class MyTableModel extends javax.swing.table.AbstractTableModel
,重写方法:
public int getColumnCount()和 public Object getValueAt(int row,int column)
兄弟是高手,提出来的见解都很不同凡响呀 不过兄弟对我的帮助可比这300分有价值多了,谢谢,真的很感谢兄弟能够这么认真,这么严谨的提出解决方案!令小弟佩服,佩服!小弟发短信总算没有问错人,谢谢! 放心,小弟还有4000多分,兄弟还有好多问题要问的,兄弟又是高手,不愁分数不漫漫转移到你哪里的! 兄弟有QQ吗?QQ多少?交个朋友吧