黑马程序员技术交流社区

标题: 鼠标双击 [打印本页]

作者: 吴通    时间: 2012-9-13 18:57
标题: 鼠标双击
import java.awt.*;
import java.awt.event.*;
class MouseAndKeyEventDemo
{
private Frame f;
private Button but;
MouseAndKeyEventDemo()
{
  init();
}
public void init()
{
  f=new Frame("my awt");
  //对Frame进行基本设置
  f.setBounds(300,100,600,500);
  f.setLayout(new FlowLayout());
  but=new Button("my button");
  //将组件添加到frame
  f.add(but);
  //显示窗体之前加载事件监听器
  myEvent();
  //显示窗体
  f.setVisible(true);
}
private void myEvent()
{
  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    System.exit(0);
   }
  });
  but.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.out.println("点击按钮");
   }
  });
  but.addMouseListener(new MouseAdapter()
  {
   private int count=1;
   private int clickcount=1;
   public void mouseEntered(MouseEvent e)
   {
    System.out.println("鼠标进入该组件"+count++);
   }
   /*
   public void mouseClicked(MouseEvent e)
   {
    System.out.println("点击动作"+clickcount++);
   }
   */
   //演示双击动作
   public void mouseClicked(MouseEvent e)
   {
    if(e.getClickCount()==2)  //获取点击次数
     System.out.println("双击动作");
   }
  });
}
public static void main(String[] args)
{
  new MouseAndKeyEventDemo();
}
}

演示鼠标双击的时候,判断当鼠标点击两次就执行鼠标双击,
运行时鼠标调集按钮,迅速点两次执行双击语句,但是两次间隔
时间点击就不会执行双击的语句,是不是getClickCount()这个
方法中封装了什么功能,但是查阅API查不到?求解


作者: 张飞年    时间: 2012-9-14 01:01
本帖最后由 张飞年 于 2012-9-14 01:05 编辑

楼主这里面有四个监听动作:窗口退出、进入Button、Button活动、Button双击。当程序执行时,进入Button照常执行,关键问题就在于Button的活动与双击,我测试的结果是先执行活动再执行双击再执行一次活动,根据API的解释也是如此。(后面附API说明)
     楼主说“两次间隔时间点击就不会执行双击的语句,是不是getClickCount()这个方法中封装了什么功能”,楼主的意思我想是说有时点的速度快点或者连续点会出现不是<活动单击-双击-活动单击>的情况,这个情况的原因我测试后是这样:这个Button按钮好像有个“反应时间”吧,我们看着点击时点下去鼠标(此时图标有阴影,为按下状态)松开后一会(鼠标已弹起,图标还是按下状态)它才显示松开(图标无阴影,为弹起状态),这情况在快速点击下尤为明显。只有在我双击后等会再双击,就正常显示为<活动单击-双击-活动单击>了。并不是getClickCount()这个方法中封装了什么功能。
    下面是查API的结果,及位置:
=============================================================
public void addActionListener(ActionListener l)添加指定的动作侦听器,以接收发自此按钮的动作事件。当用户在此按钮上按下或释放鼠标时,发生动作事件。如果 l 为 null,则不抛出任何异常,也不执行任何动作。
=============================================================
java.lang.Object
  java.util.EventObject
      java.awt.AWTEvent
          java.awt.event.ComponentEvent
              java.awt.event.InputEvent
                  java.awt.event.MouseEvent
getClickCount
public int getClickCount()返回与此事件关联的鼠标单击次数。

返回:
单击次数的整数值




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2