[問題] JButton的setEnable不work
最近在寫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
推
03/19 01:51, , 1F
03/19 01:51, 1F
→
03/19 01:55, , 2F
03/19 01:55, 2F
推
03/19 02:07, , 3F
03/19 02:07, 3F
→
03/19 02:51, , 4F
03/19 02:51, 4F
推
03/19 07:03, , 5F
03/19 07:03, 5F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):