看板 java 關於我們 聯絡資訊
以下是類似的程式碼: public void procedure() { if(computer){ Action_A(); Action_B(); Drawing(); computer = false; procedure(); }else if(!computer){ Action_A(); mouseControl = true; } } 滑鼠的程式碼為: public void mouseClicked(mouseEvent m) { if(mouseControll){ Action_B(); Drawing(); mouseControll = false; computer = true; procedure(); } } 大概就是玩牌時那種輪流的狀況,我現在遇到一個問題, 如果我只click 一次的話,什麼問題都沒有(這應該是正常的) 但是如果我連續狂按十次的話,procedure會連跑十次,即使有mouseControl這個 變數去控制的話,也是一樣 這種情形我該怎麼作,才有辦法在取得下次滑鼠控制權之前,只接受一次click,其 它視為無效? 我試過 用Thread.sleep()....無效。 用add & removeMouseListener()....無效 在procedure前加一個單次迴圈....無效 加synchronized好像在此是沒有作用的.... 懇請有空的人,可以告訴我該怎麼作才可以作到?非常感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.107.41
H45:我有兩種方法,1. disableEvents 2. Multi-threading 01/08 03:21
PsMonkey:為甚麼加變數控制無效 @__@ 01/08 03:28
H45:因為點點點...AWTThread busy, 然後 event 照樣 dispatch 01/08 03:35
tatibana31:可否問一下怎麼作disableEvents??因為這個我從沒作過 01/08 03:41
H45:該方法為 protected, 若走這條路,你需要繼承 component 01/08 03:46