看板 java 關於我們 聯絡資訊
最近在寫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
PsMonkey:==.==== 重點是你的 doSomething() 到底是 do what? 03/19 01:51
tkcn:為什麼這會是重點?應該就只是某種花時間的操作吧 03/19 01:55
PsMonkey:doSomething() 拿掉就正常→這有點反直覺阿 @_@ 03/19 02:07
mrker:可能就是撈資料庫之類的動作但沒有額外操作Ul的行為 03/19 02:51
PsMonkey:果然 AWT = All Week Tool [完全誤] 03/19 07:03