JTable是否可以编辑的问题

Evenque 2011-01-27 07:58:23
public boolean isCellEditable(int row, int column) {}

重写JTable的isCellEditable()方法可以设置JTable是否可以编辑。

但是现在,我在界面上想通过按钮来控制JTable是否可以编辑,比如当我按下【编辑】按钮的时候,JTable就进入可编辑状态,再按下【取消】按钮,JTable就不可以编辑了。

现在的问题是,jTable这个对象创建完毕后,编辑状态就不可以改变了,除非重画这个jTable。

大家有什么好的方法?
...全文
153 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Evenque 2011-01-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chdw 的回复:]
你要清楚,public boolean isCellEditable(int row, int column) 这个方法并不是从开始就需要固定的

而是JTable在你双击的时候再调用这个方法,如果这次双击时返回了true,下次返回了false,

JTable就会在第一次可以编辑,第二次不可以

所以你只需要控制好你的isCellEditable方法就可以了,不需要重新创建JTabl……
[/Quote]
原来如此,谢谢。
Evenque 2011-01-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 nanman 的回复:]
要自己做一个JTextField放入单元格,addFocusListener
实现focusGained、focusLost等
[/Quote]
也就是说在CellEditer里面设置是否可以编辑?
我试一试。
  • 打赏
  • 举报
回复
要自己做一个JTextField放入单元格,addFocusListener
实现focusGained、focusLost等
Evenque 2011-01-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gongfuliang 的回复:]
??

即使是用isCellEditable进行判断,怎么会编辑状态就不能改变了?

直接的办法就是创建一个变量:

private boolean isEditable = false;

public boolean isCellEditable(int row, int column) {
if(!isEditable){
return isEdi……
[/Quote]
比如:JTabel jTable = new MyTable();/*这个重写了isCellEditable方法*/ 之后,
我去改变isEditable标志,jTable就能自动改变编辑状态吗?
估计是我得自己去重新创建一遍jTable才可以吧?
gongfuliang 2011-01-28
  • 打赏
  • 举报
回复
??

即使是用isCellEditable进行判断,怎么会编辑状态就不能改变了?

直接的办法就是创建一个变量:

private boolean isEditable = false;

public boolean isCellEditable(int row, int column) {
if(!isEditable){
return isEditable;
}

......
}
dracularking 2011-01-28
  • 打赏
  • 举报
回复
能不能编辑是由当前Table使用的TableModel决定的,JTable和TableModel是固定了,但是JTable用哪个TableModel是不固定的,就是可以换~

table.setModel(tableModel);
Ji秋风 2011-01-28
  • 打赏
  • 举报
回复
2楼是正解。
楼主你说的不会是fireTableCellUpdated这个函数吧?
这个函数通常放在setValueAt函数中,比如:

public void setValueAt(Object value, int row, int col) {
...
fireTableCellUpdated(row, col);

// printDebugData();
}

建议看看java tutorial。

[Quote=引用 2 楼 evenque 的回复:]

引用 1 楼 gongfuliang 的回复:
??

即使是用isCellEditable进行判断,怎么会编辑状态就不能改变了?

直接的办法就是创建一个变量:

private boolean isEditable = false;

public boolean isCellEditable(int row, int column) {
if(!isEditable){……
[/Quote]
ChDw 2011-01-28
  • 打赏
  • 举报
回复
你要清楚,public boolean isCellEditable(int row, int column) 这个方法并不是从开始就需要固定的

而是JTable在你双击的时候再调用这个方法,如果这次双击时返回了true,下次返回了false,

JTable就会在第一次可以编辑,第二次不可以

所以你只需要控制好你的isCellEditable方法就可以了,不需要重新创建JTable(如果是这样的设计就太烂了)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧