网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.java多线程设计模式:wait/notify.
.使用UML编写Java 设计模式例子 F.
.快速排序算法的JAVA实现.
.用Java写一个地图编辑器.
.java反射功能.
.企业级应用中的Applet和Servlet的.
.Eclipse Form设计指南之定制布局.
.WebLogic Server 国际.
.安全高效的使用PNG图.
.在实际开发中教您NetBeans的使用.
.Mysql的最大连接数用java程序测试.
.让Java程序带着JRE一起上路.
.Java和因特网.
.正则表达式的概述及在JAVA中的使.
.Java 2 源码解读:java.util.Arr.
.学java的几点建议.
.使用Java编写Palm OS程序的.
.一个记事本的源程序.
.JavaBeans程序开发从入门到精通.
.高峰保护软件:预测需求高峰的体.

更好的捕捉鼠标事件

发表日期:2008-1-5



  更好的捕捉鼠标事件---看看流行的和过时的鼠标事件
  
  原作: 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 进行试验的好方法.
上一篇:用Apache Torque项目来提升Java程序的性能 人气:1086
下一篇:谈java的学习方向 人气:664
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐