当前位置: 技术问答>java相关
swing.JTable 修改单元值怎么不更新?
来源: 互联网 发布时间:2017-03-27
本文导语: 一个 swing.JTable 的表,各单元的值可以修改 一个 Button 按 Button 后 jTable 内值赋给一个数组 问题 :修改jTable 的一个单元格后直接按Button, 这个单元的值没有赋给数组。 但是如果修改完后,在表...
一个 swing.JTable 的表,各单元的值可以修改
一个 Button
按 Button 后 jTable 内值赋给一个数组
问题 :修改jTable 的一个单元格后直接按Button, 这个单元的值没有赋给数组。
但是如果修改完后,在表格内其他的单元格点击一下,再按Button, 这个单元的值就会赋给数组。
为什么? 是不是有什么刷新的函数? 怎么免去点击?
一个 Button
按 Button 后 jTable 内值赋给一个数组
问题 :修改jTable 的一个单元格后直接按Button, 这个单元的值没有赋给数组。
但是如果修改完后,在表格内其他的单元格点击一下,再按Button, 这个单元的值就会赋给数组。
为什么? 是不是有什么刷新的函数? 怎么免去点击?
|
表格的编辑器在stopCellEditing之前是不把当前的值保存进去的.所以你点击按钮是原来的旧制.但是当你编辑完cell数据后,再别的cell点击时,Jtable调用了刚才你所编辑单元格编辑器的stopCellEditing方法,把编辑后的值保存进去了.
你可以通过jTable的isEditing方法判断表格是否正在编辑,如果为true.你可以通过getEditingColumn和getEditingRow获取当前编辑的单元格的位置.然后通过getCellEditor(row,col)获取正在编辑的编辑器,然后调用她的stopCellEditing方法就差不多了.
仔细看看jdk帮助吧.
祝你好运.
大体的流程如下:
if(jTable1.isEditing()){
int row = jTable1.getEditingRow();
int col = jTable1.getEditingColumn();
jTable1.getCellEditor(row,col).stopCellEditing();
}
你可以通过jTable的isEditing方法判断表格是否正在编辑,如果为true.你可以通过getEditingColumn和getEditingRow获取当前编辑的单元格的位置.然后通过getCellEditor(row,col)获取正在编辑的编辑器,然后调用她的stopCellEditing方法就差不多了.
仔细看看jdk帮助吧.
祝你好运.
大体的流程如下:
if(jTable1.isEditing()){
int row = jTable1.getEditingRow();
int col = jTable1.getEditingColumn();
jTable1.getCellEditor(row,col).stopCellEditing();
}
|
重新构造model
|
你应该要repaint
|
这样建表来代替原来的表:
DefaultTableModel tmodel=new DefaultTableModel(new Vector(),columnNames);
Jtable table = new Jtable(tmodel);
修改时只修改tmodel就可以了.
DefaultTableModel tmodel=new DefaultTableModel(new Vector(),columnNames);
Jtable table = new Jtable(tmodel);
修改时只修改tmodel就可以了.
|
赋值之后需要调用fireTableCellUpdated(row,column)或者fireTableDataUpdated()。
|
直接使用JTable.setValueAt() 就可以了。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。