作者risker760915 (Risker)
看板java
標題[問題] 為什麼JMenuItem的mouseClicked沒反應
時間Sat Nov 26 11:31:11 2011
畢業後當了一年兵沒碰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
→ lingerkptor:想問一下~誰去呼叫那兩個方法? (listener?還是?) 11/26 15:59
→ AI3767:如果只想用click的功能,去用addActionListener就好了啊 11/26 16:02
→ risker760915:是listener,netbeans的code是使用mouseListener 11/26 16:10
→ lingerkptor:把listener呼叫那兩個方法的code貼出來吧.. 11/26 16:14
※ 編輯: risker760915 來自: 118.170.33.196 (11/26 16:36)
→ risker760915:已附上code,得來看看adapter有啥影響了... 11/26 16:37
→ risker760915:看了api,adapter沒影響到才對,頭大... 11/26 16:44
→ risker760915:感覺是JMenuItem那邊我有東西沒搞懂... 11/26 16:51
→ lingerkptor:我會override MouseAdapter的mouseClicked方法試試 11/26 17:20
→ lingerkptor:並加上System.out.println(evt.toString());測試 11/26 17:22
→ lingerkptor:如果再不行,試著去呼叫二樓的方法並加入以上看看事件 11/26 17:24
推 PsMonkey:[亂入] 你同學要嘛天才,要嘛就是根本沒寫過 GUI..... 11/26 17:57
→ risker760915:override無效,等等吃完晚餐再試試看二樓的方法..3q~~ 11/26 18:35