[問題] 為什麼JMenuItem的mouseClicked沒反應

看板java作者 (Risker)時間14年前 (2011/11/26 11:31), 編輯推噓1(1011)
留言12則, 4人參與, 最新討論串1/1
畢業後當了一年兵沒碰java,最近開始要用到了,讀書時GUI一直都是我的罩門,同學說最 簡單的偏偏是我最不會的XD,回歸正題... ----------------------------------------------------------------------------- 最近我在用NetBeans寫一個視窗程式,在弄JMenuItem的mouseClick發現都沒反應,雖然我 目前可以用一個boolean變數配合mouseReleased和mouseExited來達到我需要的動作,但是 這樣感覺是一種爛方法,因為我的JMenuItem有快30個,不知道能否提供我一個比較好的處 理方法,在此謝謝大家..3q~~ 以下附上單一JMenuItem用到的code: 全域變數*1: boolean test1_Clicked_Check = true; //預設為true Method *2: private void test1MenuItemMouseReleased(java.awt.event.MouseEvent evt) { if(test1_Clicked_Check) { //mouseRelease時在目標JMenuItem內 jTextField1.setText("test1"); //用來確認狀態而已 } else { //mouseRelease時不在目標JMenuItem內,無動作產生並重設為true test1_Clicked_Check = true; } } private void test1MenuItemMouseExited(java.awt.event.MouseEvent evt) { //滑鼠離開目標JMenuItem的範圍,設定為"非mouseClicked" test1_Clicked_Check = false; } ------------------------------------------------------------------------------ 附上NetBeans的code: test1MenuItem.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseReleased(java.awt.event.MouseEvent evt) { test1MenuItemMouseReleased(evt); } public void mouseExited(java.awt.event.MouseEvent evt) { test1MenuItemMouseExited(evt); } }); 仔細看才發現中間是用MouseAdapter,以前大學時純手工code時沒碰過這東西... ------------------------------------------------------------------------------ 在此謝謝各位,感謝~~!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.33.196

11/26 15:59, , 1F
想問一下~誰去呼叫那兩個方法? (listener?還是?)
11/26 15:59, 1F

11/26 16:02, , 2F
如果只想用click的功能,去用addActionListener就好了啊
11/26 16:02, 2F

11/26 16:10, , 3F
是listener,netbeans的code是使用mouseListener
11/26 16:10, 3F

11/26 16:14, , 4F
把listener呼叫那兩個方法的code貼出來吧..
11/26 16:14, 4F
※ 編輯: risker760915 來自: 118.170.33.196 (11/26 16:36)

11/26 16:37, , 5F
已附上code,得來看看adapter有啥影響了...
11/26 16:37, 5F

11/26 16:44, , 6F
看了api,adapter沒影響到才對,頭大...
11/26 16:44, 6F

11/26 16:51, , 7F
感覺是JMenuItem那邊我有東西沒搞懂...
11/26 16:51, 7F

11/26 17:20, , 8F
我會override MouseAdapter的mouseClicked方法試試
11/26 17:20, 8F

11/26 17:22, , 9F
並加上System.out.println(evt.toString());測試
11/26 17:22, 9F

11/26 17:24, , 10F
如果再不行,試著去呼叫二樓的方法並加入以上看看事件
11/26 17:24, 10F

11/26 17:57, , 11F
[亂入] 你同學要嘛天才,要嘛就是根本沒寫過 GUI.....
11/26 17:57, 11F

11/26 18:35, , 12F
override無效,等等吃完晚餐再試試看二樓的方法..3q~~
11/26 18:35, 12F
文章代碼(AID): #1Eq5s2O6 (java)