JTable的问题:关于控制单元格编辑状态的问题 我觉得是这个原因。在调用你上面的那个方式之后,table才调用选中那一行。这主要是事件的先后顺序引起的。当你鼠标点击哪个cell的时候,首先会调用celleditor,然后才设置选中那一行。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实还有一种方法,就是在ListSelectedModel里面的listener里面取道被选中的行的编号,然后在按上面的方式判断空否,这样的情况是被选择的表格行编号没错了,但是当鼠标的第一下是点击包装了JComboBox 的列时,JComboBox 还是会被触发(因为此时它是可编辑的)结果就起不到预想的作用了。 各位,有什么好的办法吗?在线急等 在TableModel中控制单元是否为只读. wolfsquare(狼平方 Swing报表工人)我最开始的时候也是想这么做的,但是可能思路不对。你可以帮我看看以下,顶楼的代码。谢谢! 没有太多源码我也没法帮你调试.既然定楼方法不行就使用TableModel控制,为什么要这么执着呢? wolfsquare(狼平方 Swing报表工人)TableModel的控制方法不还是需要使用DefaultCellEditor ;难道还要别的办法吗?请赐教! implement一个TableModel,重载isCellEditable(int row,int col)方法. implement一个TableModel,重载isCellEditable(int row,int col)方法.如果要设置所有单元格是否可编辑,那要遍历所有行与列如果以后又新加了行,怎么设置新加行的所有单元格是否可编辑? implement一个TableModel,重载isCellEditable(int row,int col)方法.OK啦,只需要不管3721,从isCellEditable(int row,int col)返回false就是所有单元都不可编辑。 isCellEditable(int row,int col)这个方法可能不太适合我现在需要的功能,首先我想这个方法的前提是根据输入的行列编号取该单元格的可否编辑的状态,而我现在想要的是根据特定的条件来设置表格的是否可以编辑,满足这个条件(表格上一行的内容没有填满,则不允许添下一行,而且该行的下拉菜单不能被激活成编辑状态。)才可以编辑表格,这里最麻烦的是下拉菜单不能在不满足条件的情况下被激活成编辑状态,我的源代码太长了,贴不下。如果您感兴趣,贴出你的邮箱来。下面的代码是我针对设置为JComboBox的列所进行的编辑控制。 class PriceEditor extends DefaultCellEditor { public PriceEditor(JComboBox combo) { super(combo); } public boolean isCellEditable(EventObject e) { int srow = table.getSelectedRow(); if(srow>0){ for(int i=0;i<table.getColumnCount();i++){ if(!(((String)table.getValueAt(row==0?0:srow-1,i)).length()>=1)){//判断所选择的行之上是否有空值 isfull = false; break; } } }else if(srow==0){ isfull = true; } return isfull; } } 两位高手: wolfsquare(狼平方 Swing报表工人) kypfos(大学里没有回忆) 我终于顿悟了,呵呵!万分的感谢!! 关于事件侦听 一个选择题:java(J2EE)和管理员(AIX,Orical) JAVA对象的序列化是否可以重写 java 中关于浮点数的问题 怎么没有回答,怎样在数据库里得到表里的内容,在把相应的内容加入到文本框里? package和jar有什么区别和联系? 一个程序运行有问题,大家帮帮忙! 一个问题小弟想不通 编译时报错。。。。 一个APPLET的简单问题!(75分求答案!) 求救:高人看过来,散分 关于SWING类中抛出的例外,大牛进
各位,有什么好的办法吗?在线急等
既然定楼方法不行就使用TableModel控制,为什么要这么执着呢?
下面的代码是我针对设置为JComboBox的列所进行的编辑控制。
class PriceEditor extends DefaultCellEditor {
public PriceEditor(JComboBox combo) {
super(combo);
}
public boolean isCellEditable(EventObject e) {
int srow = table.getSelectedRow();
if(srow>0){
for(int i=0;i<table.getColumnCount();i++){
if(!(((String)table.getValueAt(row==0?0:srow-1,i)).length()>=1)){//判断所选择的行之上是否有空值
isfull = false;
break;
}
}
}else if(srow==0){
isfull = true;
}
return isfull;
}
}
wolfsquare(狼平方 Swing报表工人)
kypfos(大学里没有回忆)
我终于顿悟了,呵呵!万分的感谢!!