谁知道如何修改JTable没显示的数据?
java吧
全部回复
仅看楼主
level 4
详情请看:
数据库里建了表,在JAVA里连上后select,ResultSet一共接收4行13列数据,为了美观简洁,我用JTable显示时只显示其中的4列数据。
问题来了:以前用JTable显示全部数据时,点修改按钮,利用model模型的getValueAt方法,可以将要修改的那一行数据分别显示在13个JTextField里。
可现在由于我JTable只显示4列数据,model模型也只能得到该行4个数据……哪位大神知道如何让所有13个JTextField都取到数据以供修改数据
2012年10月03日 16点10分 1
level 4
可能有点啰嗦……手机党,求解惑
2012年10月03日 16点10分 2
level 11
表示直接把awt放弃了
2012年10月03日 16点10分 3
level 16
你应该有个完整的数据集,用它填补那些 JTextField
2012年10月03日 16点10分 4
level 1
直接拿你的ResultSet就是了啊,还拿表格里的东西干嘛?ResultSet就是你要的东西啊
2012年10月03日 16点10分 5
level 4
ResultSet如何得到该行的某列数据呢?
2012年10月03日 16点10分 6
level 4
难道是循环……RS.NEXT,知道选中的那一行,再getstring么
2012年10月04日 00点10分 7
level 16
你是怎么让 JTabel 显示的,就这么让这些 JTextField 显示嘛
2012年10月04日 00点10分 8
如果我ResultSet也只接受4列数据,那岂不是只能添加13条数据,但只能修改4条数据拉
2012年10月04日 00点10分
回复 Vampire丶Elena :你当然要有个东西,获得完整的全部列的数据才行
2012年10月04日 00点10分
@windsun_ul 噢,好吧,只能这样了,昨天也这么做了,就是忘了如何得到ResultSet的某行某列的值,而且得把所有select重写……
2012年10月04日 00点10分
level 12
从MVC的角度看,
你要能修改所有的列,
那你的Model至少得存着所有的列,
你把数据从数据库里取出来,
暂存在本地内存里,需要你本地内存有一个能满足你操作需求的数据model,
这个model对后台向数据库的数据管理负责,对前台向JTable这个view负责(implements TableModel)
看你的问题,首先是你对这个数据model认识不足,没有设计好
如果你把数据拿出来直接用 Object[][] 建了 JTable,那你的数据 model 就是一个藏在JTable内的匿名类,这个类连个名字都没有,直接用 Object[][]存数据,只提供最基本的TableModel的方法,可以说只对view提供最基本的服务,非常不便于管理
你可以自己写一个table model的类,它应该能让你不通过JTable就能方便的操作,并且能把你的操作直接反映到JTable(view)上
甚至它应该能直接对你从数据库读取数据的动作做监听,随着你数据库的读取实时刷新JTable这个view
这样你再想改某一行数据时,是自定义TableCellEditor也好,是弹出编辑对话框也好,你至少知道某一行的数据要去哪取,编辑完了要放回哪里去了
这样基本上除了“取得当前选中的index在model里对应的index”这个操作外,其他的你都不用依赖于 JTable 了
“取得当前选中的index在model里对应的index”:
int index = jtable.convertRowIndexToModel(jtable.getSelectedRow());
2012年10月04日 01点10分 9
level 1

int rowNum=this.jt.getSelectedRow();
if(rowNum==-1){
JOptionPane.showMessageDialog(jf,"请选择一个需要修改的对象");
return;
}
String Id={mm.getValueAt(rowNum, 0).toString()};
这里的Id 就是你选择的那行的,第一列的数据.这个数据在数据库里是唯一的标识.比如编号(unique not null)
这样你就可以用select * from 表名 where 编号=Id 去查数据,然后返回一个resultSet
你再写个,JDilog 把结果集装到JDilog,直接就布局成,N行 2列.在点击修改时就创建Dilog 这样就看到你选择那行的所有数据了.
2012年11月27日 11点11分 10
1