分享
 
 
 

更好的捕捉鼠标事件

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

更好的捕捉鼠标事件---看看流行的和过时的鼠标事件

原作: Tony Sintes

编译: Jeru Liu

原文出处: http://www.Javaworld.com/javaworld/javaqa/2000-07/02-qa-0714-mouse.Html

MouseListener 方法接口中的mouseClicked() 方法和mousePressed() 方法

有什么区别?

这是一个热门的话题,让我们来深入的找寻答案,Java’s AWT 库 提供了两个接口来监听和接收鼠标事件. 一个是 java.awt.event.MouseListener:

public interface MouseListener extends EventListener

{

public void mousePressed(MouseEvent e);

public void mouseReleased(MouseEvent e);

public void mouseClicked(MouseEvent e);

public void mouseEntered(MouseEvent e);

public void mouseExited(MouseEvent e);

}

另一个是 java.awt.event.MouseMotionListener:

public interface MouseMotionListener extends EventListener

{

public void mouseDragged(MouseEvent e);

public void mouseMoved(MouseEvent e);

}

Swing 提供了 MouseInputListener, 这个接口的同时扩展了MouseMotionListener 和 MouseListener 接口.

让我们来看看这些接口中的方法:

· mousePressed() 当用户按下鼠标按钮时发生.

· mouseReleased() 当用户松开鼠标按钮时发生.

· mouseClicked() 当用户按下并松开鼠标按钮时发生. 用户在选择或双击图标的时候通常会点击鼠标按钮. 用户假如在松开鼠标之前移动鼠标,点击不会导致鼠标相应事件出现.

· 因为点击鼠标是按下鼠标和松开鼠标的结合, 在事件分配给 mouseClicked() 方法之前, mousePressed() 和 mouseReleased() 方法已同时被调用.

· mouseEntered() 当鼠标离开当前组件并进入你所监听的组件时激活事件.

· mouseExited() 当鼠标离开你所监听的组件时发生.

· mouseDragged() 当用户按下鼠标按钮并在松开之前进行移动时发生.在mouseDragged() 后松开鼠标不会导致mouseClicked().

· mouseMoved() 当鼠标在组件上移动而 不时拖动时发生.

要监听鼠标事件就必须调用这些接口之一,或扩展一个鼠标适配器(mouse adapters) 类. AWT 提供了两种监听适配器(listener adapters): java.awt.event.MouseAdapter 和 java.awt.event.MouseMotionAdapter.

Swing 为MouseInputListener提供了一个叫做javax.swing.event.MouseInputAdapter的适配器. 有了适配器你就不必调用接口中每个方法了. 取而代之, 你只需简单的扩展适配器并重写你要监听的方法就可以了.

假如你还是很迷惑, 再看看API 并写个小测试程序. 有时尝试理解不同事件的最好方法different events. 我写了一个小小的应用程序来表现两种鼠标事件的区别.这里是完整的代码:

import java.awt.*;

import java.awt.event.*;

public class MouseTest extends Frame

{

public MouseTest()

{

Button b = new Button("JavaWorld JavaQ&A");

b.addActionListener( new ActionListener() {

public void actionPerformed(ActionEvent e)

{

System.exit(0);

}

}

);

add(b,BorderLayout.NORTH);

addMouseListener(new MouseTest.MouseHandler());

addMouseMotionListener(new MouseTest.MouseMotionHandler());

}

// MouseHandler is an inner class that implements the MouseListener.

// Each method simply prints out a message to the command line.

private class MouseHandler implements MouseListener

{

public void mousePressed(MouseEvent e)

{

System.out.println("mouse pressed");

}

public void mouseClicked(MouseEvent e)

{

System.out.println("moused clicked");

}

public void mouseReleased(MouseEvent e)

{

System.out.println("mouse released");

}

public void mouseEntered(MouseEvent e)

{

System.out.println("mouse entered");

}

public void mouseExited(MouseEvent e)

{

System.out.println("mouse exited");

}

}

// MouseMotionHandler is an inner class that implements the MouseMotionListener.

// Each method simply prints out a message to the command line.

private class MouseMotionHandler implements MouseMotionListener

{

public void mouseMoved(MouseEvent e)

{

System.out.println("mouse moved");

}

public void mouseDragged(MouseEvent e)

{

System.out.println("mouse dragged");

}

}

public static void main(String[] args)

{

new MouseTest().show();

}

}

这个应用程序建立了一个窗口和一个按钮.当你移动鼠标并按下按钮时, 应用程序就会在命令行打印出文本消息, 让你看到鼠标响应和事件间的对应关系.

象上边那样写一个小小的测试程序是对生疏的API 进行试验的好方法.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有