作者mrker (ꬮ....)
看板java
标题[问题] JButton的setEnable不work
时间Tue Mar 19 01:30:07 2013
最近在写UI的时候发生很无法理解的状况
this.execute_jBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
execute_jBtn.setEnable(false);
doSomething(); // 处理某些事情
execute_jBtn.setEnable(true);
}
});
当execute_jBtn被按下时,我预期他会先disable,然後做某些事,最後再启用
可是事实上按下时按键并不会disable
如果把doSomething()拿掉似乎就可以....
再来,如果actionPerformed里面new一个执行绪去做,似乎就可以
this.execute_jBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Thread() {
@Override
public void run() {
execute_jBtn.setEnable(false);
doSomething(); // 处理某些事情
execute_jBtn.setEnable(true);
}
}.start();
};
});
这对我来说真的有点像灵异事件,因为网路抓了几个Test Case也是这种写法
可以work,同样的code我中间加上doSomething()就不work
action listener不是包在Swing的执行绪里面吗?应该也没有dispatch的问题才是阿 = =
而且我确定这个JButton没有其他的事件处理
因为我有先getListeners() 再for-loop removeListener()避免事件被吃掉
真是怪...
恳请版上高手解答!! 谢谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.220.204.217
1F:推 PsMonkey:==.==== 重点是你的 doSomething() 到底是 do what? 03/19 01:51
2F:→ tkcn:为什麽这会是重点?应该就只是某种花时间的操作吧 03/19 01:55
3F:推 PsMonkey:doSomething() 拿掉就正常→这有点反直觉阿 @_@ 03/19 02:07
4F:→ mrker:可能就是捞资料库之类的动作但没有额外操作Ul的行为 03/19 02:51
5F:推 PsMonkey:果然 AWT = All Week Tool [完全误] 03/19 07:03