精华内容
下载资源
问答
  • 今天在学习的过程中突然发现,在鼠标操作的监听器中,没有提供鼠标双击监听器,而双击是很常用的一种操作。话不多说,直接看实现监听鼠标单击/双击的事件的监听器。

    今天在学习的过程中突然发现,在鼠标操作的监听器中,没有提供鼠标双击的监听器,而双击是很常用的一种操作。话不多说,直接看实现监听鼠标单击/双击的事件的监听器。

    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    
    import org.omg.CORBA.PRIVATE_MEMBER;
    
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class MouseClickedTwiceTest extends JFrame {
    
    	private JPanel contentPane;
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					MouseClickedTwiceTest frame = new MouseClickedTwiceTest();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public MouseClickedTwiceTest() {
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 300);
    		contentPane = new JPanel();
    		contentPane.addMouseListener(new MouseClickedTiwceListener());//在contentPane上添加监听器,进行测试
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		contentPane.setLayout(new BorderLayout(0, 0));
    		setContentPane(contentPane);
    	}
    	
    	public static class MouseClickedTiwceListener extends MouseAdapter{
    		private static  boolean flag = false;		//双击事件已执行时置为真
    		private static int clickNum = 1;		//指示鼠标点击次数,默认为单击
    		@Override
    		public void mouseClicked(MouseEvent e) {
    			// TODO Auto-generated method stub
    			final MouseEvent me = e;
    			MouseClickedTiwceListener.flag= false;
    			if (MouseClickedTiwceListener.clickNum==2) {
    				//鼠标点击次数为2调用双击事件
    				this.mouseClickedTwice(me);
    				//调用完毕clickNum置为1
    				MouseClickedTiwceListener.clickNum=1;
    				MouseClickedTiwceListener.flag=true;
    				return;
    			}
    			//新建定时器,双击检测间隔为500ms
    			Timer timer = new Timer();
    			
    			timer.schedule(new TimerTask() {
    				//指示定时器执行次数
    				int num = 0;
    				@Override
    				public void run() {
    					// 双击事件已经执行,取消定时器任务
    					if(MouseClickedTiwceListener.flag) {
    						num=0;
    						MouseClickedTiwceListener.clickNum=1;
    						this.cancel();
    						return;
    					}
    					//定时器再次执行,调用单击事件,然后取消定时器任务
    					if (num==1) {
    						mouseClickedOnce(me);
    						MouseClickedTiwceListener.flag=true;
    						MouseClickedTiwceListener.clickNum=1;
    						num=0;
    						this.cancel();
    						return;
    					}
    					clickNum++;
    					num++;
    				}
    			},new Date(), 500);
    		}
    		protected void mouseClickedOnce(MouseEvent me) {
    			// 单击事件
    			System.out.println("1");
    		}
    		private void mouseClickedTwice(MouseEvent me) {
    			// 双击事件
    			System.out.println("2");
    		}
    	
    	}
    
    }

    本方法中使用了定时器Timer,其schedule方法的完整参数为:timer.schedule(TimerTask task,long delay/Date firstTime,long period);

    其中:

    1.task为执行的任务,需要重写run()方法;

    2.第二个参数可以是Date或者long:

    delay为第一次执行run()方法的延迟时间,无延迟(立刻执行)情况下可设置为0;

    firstTime为第一次执行run()方法的延迟时间,无延迟(立刻执行)情况下可设置为new Date();

    3.period为执行run()方法的周期间隔,每过periodms执行一次。

    整个程序的业务逻辑很简单,只要注意一点就是,每次单击都会触发整段程序,这样才是实现了单双击的区分。

    当然也有一种更简单的方式来实现双击判断,就是通过e.getClickCount();获得单击次数,此方法不再赘述。

    展开全文
  • Java鼠标监听(单击、双击、滑轮)

    千次阅读 2015-10-29 21:58:40
    鼠标事件要添加MouseListener,捕获MouseEvent。MouseListener里的几个事件的参数都是MouseEvent,MouseEvent提供了获得点击了哪个键的方法 ---> getButton() public void mouseClicked(MouseEvent arg0) { if(arg...

    鼠标事件要添加MouseListener,捕获MouseEvent。MouseListener里的几个事件的参数都是MouseEvent,MouseEvent提供了获得点击了哪个键的方法  --->  getButton()

    public void mouseClicked(MouseEvent arg0) {
    	if(arg0.getButton() == MouseEvent.BUTTON1) {
    		// 左键点击
    	} else if(arg0.getButton() == MouseEvent.BUTTON2) {
    		// 中键点击
    	} else if(arg0.getButton() == MouseEvent.BUTTON3) {
    		// 右键点击
    	}
    }

    添加监听是addMouseListener方法,取消监听当然就是removeMouseListener方法.


    展开全文
  • Java监听鼠标事件

    万次阅读 2012-07-12 05:21:10
    import java.awt.Container; import java.awt.event.MouseEvent; import java.awt.event.MouseListener;... * 监听鼠标事件 * 可以看出,当双击鼠标时,第一次的点击会触发一次单击事件 * @author

    package com.han;
    
    import java.awt.Container;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    
    import javax.swing.JFrame;
    
    /**
     * 监听鼠标事件
     * 可以看出,当双击鼠标时,第一次的点击会触发一次单击事件
     * @author HAN
     *
     */
    public class MouseEvent_1 extends JFrame {
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 7554087008285696671L;
    
    	public MouseEvent_1() {
    		// TODO Auto-generated constructor stub
    		Container container = getContentPane();
    		container.addMouseListener(new MouseListener() {
    
    			@Override
    			public void mouseClicked(MouseEvent e) {
    				// TODO Auto-generated method stub
    				System.out.print("单击了鼠标按键,");
    				int i = e.getButton();
    				if (i == MouseEvent.BUTTON1)
    					System.out.print("单击的是鼠标左键,");
    				if (i == MouseEvent.BUTTON2)
    					System.out.print("单击的是鼠标中键,");
    				if (i == MouseEvent.BUTTON3)
    					System.out.print("单击的是鼠标右键,");
    				int clickCount = e.getClickCount();
    				System.out.println("单击次数为" + clickCount + "下");
    			}
    
    			@Override
    			public void mousePressed(MouseEvent e) {
    				// TODO Auto-generated method stub
    				System.out.print("鼠标按键被按下,");
    				int i = e.getButton();
    				if (i == MouseEvent.BUTTON1)
    					System.out.println("按下的是鼠标左键");
    				if (i == MouseEvent.BUTTON2)
    					System.out.println("按下的是鼠标中键");
    				if (i == MouseEvent.BUTTON3)
    					System.out.println("按下的是鼠标右键");
    			}
    
    			@Override
    			public void mouseReleased(MouseEvent e) {
    				// TODO Auto-generated method stub
    				System.out.print("鼠标按键被释放,");
    				int i = e.getButton();
    				if (i == MouseEvent.BUTTON1)
    					System.out.println("释放的是鼠标左键");
    				if (i == MouseEvent.BUTTON2)
    					System.out.println("释放的是鼠标中键");
    				if (i == MouseEvent.BUTTON3)
    					System.out.println("释放的是鼠标右键");
    			}
    
    			@Override
    			public void mouseEntered(MouseEvent e) {
    				// TODO Auto-generated method stub
    				System.out.println("光标移入组件");
    			}
    
    			@Override
    			public void mouseExited(MouseEvent e) {
    				// TODO Auto-generated method stub
    				System.out.println("光标移出组件");
    			}
    			
    		});
    	}
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		MouseEvent_1 frame = new MouseEvent_1();
    		frame.setTitle("MouseEvent Test");
    		frame.setVisible(true);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setBounds(0, 0, 300, 100);
    	}
    
    }
    


    展开全文
  • java鼠标点击事件举例题目描述一、基本思路二、引用的类分析三、代码实现 题目描述 编写Java程序,创建一个窗体,并实现交互。在窗体内“单击鼠标左键”,在光标处绘制...2,实现鼠标双击事件,可以通过事件源e.getClic

    题目描述

    编写Java程序,创建一个窗体,并实现交互。在窗体内“单击鼠标左键”,在光标处绘制一个“绿圆”;窗体内“单击鼠标右键”,在光标处绘制一个“红色方框”;窗体内“双击鼠标左键”,清空所有已画“圆”和“方”。

    一、基本思路

    题目属于简单的窗体交互,主体代码是给面板添加鼠标事件监听器,然后实现该监听器。


    二、引用的类分析

    1,这里要实现在窗口作画,需要引入Graphics类。

    2,实现鼠标双击事件,可以通过事件源e.getClickCount()==2来判断鼠标点击次数来实现鼠标双击事件。但这样的话,程序在执行双击事件前会再执行一次左键单击事件。为了避免这种情况,这里使用java中的定时器类Timer。

    Timer的方法schedule(TimerTask task, Date firstTime , long period)这个方法是调度一个task,从事件firstTime开始调度,每次调度完后,要等待period(ms)才开始继续调度。

    (实现的代码中对Timer类的使用借鉴于多位博主的文章内容)


    三、代码实现

    import java.awt.event.*;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import java.awt.Graphics;
    import java.awt.Color;
    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class MyFrame extends JFrame {
    	MyPanel panel;
    
    	MyFrame() {
    		panel = new MyPanel();
    		this.setBounds(500, 500, 600, 600);
    		panel.addMouseListener(new Draw()); // 为面板添加鼠标监听器
    		this.add(panel);
    		this.setVisible(true);
    	}
    
    	public static void main(String[] args) {
    		MyFrame mf = new MyFrame();
    	}
    }
    
    class MyPanel extends JPanel {
    	int judge = 0; // 判断鼠标点击状态
    	int x;
    	int y;
    
    	@Override
    	public void paint(Graphics g) {
    		if (judge == 1) // 单击左键
    		{
    			g.setColor(Color.GREEN);
    			g.fillOval(x, y, 50, 50);
    		} else if (judge == 2) // 双击左键
    		{
    			g.setColor(Color.WHITE);
    			super.paint(g);
    		} else if (judge == 3) // 单击右键
    		{
    			g.setColor(Color.RED);
    			g.fillRect(x, y, 50, 50);
    		}
    	}
    }
    
    class Draw extends MouseAdapter {
    
    	static boolean f = false;
    	static int n = 1;
    
    	@Override
    	public void mouseClicked(MouseEvent e) { // 实现监听器
    
    		final MyPanel mp = (MyPanel) e.getSource();
    
    		mp.x = e.getX(); // 获取鼠标点击的位置,为画图确定坐标
    		mp.y = e.getY();
    
    		f = false;
    
    		if (e.getButton() == e.BUTTON3) { // 单击右键
    			n = 3;
    			mp.judge = n;
    			mp.repaint();
    			n = 1;
    			return;
    		}
    
    		else if (e.getButton() == e.BUTTON1) {
    
    			if (n == 2) { // 双击左键
    				mp.judge = n;
    				mp.repaint();
    				n = 1;
    				f = true;
    				return;
    			}
    
    			Timer timer = new Timer(); // 使用定时器来判断双击和单击左键
    
    			timer.schedule(new TimerTask() {
    
    				int num = 0;
    
    				@Override
    				public void run() {
    
    					if (f) { // 判断双击事件是否已经执行,若已执行则取消定时器任务
    						num = 0;
    						n = 1;
    						this.cancel();
    						return;
    					}
    
    					if (num == 1) {
    						mp.judge = num; // 定时器再次执行,调用左键单击事件,然后取消定时器任务
    						mp.repaint();
    						f = true;
    						n = 1;
    						num = 0;
    						this.cancel();
    						return;
    					}
    					n++;
    					num++;
    				}
    			}, new Date(), 150);
    		}
    
    	}
    }
    

    运行结果:
    在这里插入图片描述

    展开全文
  • 给某个控件设置鼠标点击监听器,三个条件分别判断为单击,右击还是双击 单击判断 event.getButton()==MouseButton.PRIMARY 右击判断 event.getButton()==MouseButton.SECONDARY 双击判断 event.getClickCount() == ...
  • java中的事件监听

    2015-06-21 14:45:32
    java中的事件监听:当鼠标单击时,java会产生一个mouseClicked事件。当鼠标按下某一个按钮时,java会产生一个Action动作事件。一个事件代表的是一种特定的情况,鼠标的按下,松开,单击,双击,进入某一区域,按下...
  • Javaswing 如何实现文本域双击变为可编辑呢?...给文本域添加鼠标事件监听程序即可: Java代码 resultTA1=newAssistPopupTextArea(); resultTA1.setEditable(false); resultTA1.setLineWrap(true);...
  • 1、mouseClicked private void JLabelImageMouseClicked(java.awt.event.MouseEvent evt){ ...//鼠标单击/双击界面时触发( 单击双击目前的效果是一样的 ) 2、mouseEntered private void J
  • 鼠标事件包括鼠标双击、左击、右击、中间键等等,本文进行事件加载进行简单介绍,具体可以参考键盘事件。 import java.awt.*; import java.awt.event.*; //按钮活动事件与按钮活动事件的区别?优先选择...
  • 为列表添加鼠标监听事件,设置click_num用getClickCount()获取点击次数,当检测到双击时向标签中输入内容(实现显示列表中被双击的选项的内容) 为列表添加列表选中监听事件,设置object1用getSelectedValue()获取...
  • 其实,JList本身没有提供EventListener监听器,为了能处理双击操作,必须利用鼠标监听器来捕获双击鼠标。但是如何知道在哪个Item上双击鼠标呢?可以使用JList类提供的LocatToindex()方法获知。 下章节将给出实例来...
  • GUI(图形用户界面) Graphical User Interface(图形...Java为GUI提供的对象都存在java.awt和javax.swing两个包中 Awt与Swing java.awt:abstract windows toolkit(抽象窗口工具包),需要调用本地系统方法实现功能,属重
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...
  • java源码包4

    千次下载 热门讨论 2013-04-20 11:31:44
    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 ...
  • Java学习13

    2019-07-05 08:03:00
    创建表格insertRow(index)用双重for循环可以创建表格deleteRow(index)删除行deleteCell(index)删除列createCaption()创建表格标题deleteCaption()删除表格标题 ...onclick 单击鼠标左键触发ondblclick双击鼠标左键触...
  • MouseListener是鼠标点击事件的监听者也就是单击双击单击后弹起之类的动作就需要这个监听者,总之就是要点击鼠标的 MouseMotionListener是鼠标移动事件的监听者也就是moveover,moveout之类的事件也就是只移动鼠标不...
  • 双击鼠标各个按钮 单击按钮 在文本字段输入 … Swing通过事件对象来包装事件,程序可以通过事件获取事件的有关信息 事件处理的几个要素 事件源 与用户进行交互的GUI组件,表示事件来自于哪个组件或对象 比如要...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...
  • 像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...
  • 这些事件由系统事先定义好,当用户在图形界面上单击控件或双击鼠标时就可能引发某个事件,而用户程序中需要编制相应的代码来对这些事件做出处理。 事件源 图形用户界面上每个可能产生事件的组件称为事件源。 ...
  • Java学习第22天:GUI

    2014-02-16 13:36:45
    android培训、java培训、期待与您交流! ----------  until22 GUI 1.概述 2.布局 3.Frame 4.时间监听机制 5.窗体时间 6.Action时间 7.鼠标时间 8.键盘时间 9.练习 10.对话框Dialog 11.菜单练习-打开和保存文件 12....
  • 像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

空空如也

空空如也

1 2 3
收藏数 52
精华内容 20
关键字:

java鼠标双击监听

java 订阅