作者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
1F:→ lingerkptor:想问一下~谁去呼叫那两个方法? (listener?还是?) 11/26 15:59
2F:→ AI3767:如果只想用click的功能,去用addActionListener就好了啊 11/26 16:02
3F:→ risker760915:是listener,netbeans的code是使用mouseListener 11/26 16:10
4F:→ lingerkptor:把listener呼叫那两个方法的code贴出来吧.. 11/26 16:14
※ 编辑: risker760915 来自: 118.170.33.196 (11/26 16:36)
5F:→ risker760915:已附上code,得来看看adapter有啥影响了... 11/26 16:37
6F:→ risker760915:看了api,adapter没影响到才对,头大... 11/26 16:44
7F:→ risker760915:感觉是JMenuItem那边我有东西没搞懂... 11/26 16:51
8F:→ lingerkptor:我会override MouseAdapter的mouseClicked方法试试 11/26 17:20
9F:→ lingerkptor:并加上System.out.println(evt.toString());测试 11/26 17:22
10F:→ lingerkptor:如果再不行,试着去呼叫二楼的方法并加入以上看看事件 11/26 17:24
11F:推 PsMonkey:[乱入] 你同学要嘛天才,要嘛就是根本没写过 GUI..... 11/26 17:57
12F:→ risker760915:override无效,等等吃完晚餐再试试看二楼的方法..3q~~ 11/26 18:35