[問題] JButton的setEnable不work

看板java作者 (ꬮ....)時間12年前 (2013/03/19 01:30), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串1/2 (看更多)
最近在寫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
==.==== 重點是你的 doSomething() 到底是 do what?
03/19 01:51, 1F

03/19 01:55, , 2F
為什麼這會是重點?應該就只是某種花時間的操作吧
03/19 01:55, 2F

03/19 02:07, , 3F
doSomething() 拿掉就正常→這有點反直覺阿 @_@
03/19 02:07, 3F

03/19 02:51, , 4F
可能就是撈資料庫之類的動作但沒有額外操作Ul的行為
03/19 02:51, 4F

03/19 07:03, , 5F
果然 AWT = All Week Tool [完全誤]
03/19 07:03, 5F
文章代碼(AID): #1HHqyXvY (java)
文章代碼(AID): #1HHqyXvY (java)