Java MouseEvent事件

在任何事件都可以使用鼠标事件,当发生相关的事件是MouseEvent类自动一个事件对象

addMouseListener(MouseListener listener)//注册鼠标事件监视器

使用MouseListener 接口处理鼠标事件

MouseEvent中几个重要的方法

  • getX()//获取鼠标指针在事件源坐标系中的x坐标
  • getY()//获取鼠标指针在事件源坐标系中的y坐标
  • getButton()//获取鼠标的左键(BUTTON1)中键(BUTTON2)右键(BUTTON3)/填到括号里的常量
  • getClickCount()//获取鼠标被点击的次数
  • getSource()//获取发生鼠标事件的事件源

MouseListener接口中几个重要方法

  • mousePressed(MouseEvent)//当鼠标被按下时
  • mouseReleased(MouseEvent)//当鼠标被释放时
  • mouseEntered(MouseEvent)//当鼠标进入组件时
  • mouseExited(MouseEvent)//当鼠标离开组件时
  • mouseClicked(MouseEvent)//当鼠标被点击时

MouseMotionListener接口处理鼠标事件

鼠标事件的第二个接口

  • mouseDragged(MouseEvent)//当鼠标被拖动时
  • mouseMoved(MouseEvent)//当鼠标被移动时

使用坐标实现组件的拖动例子
首先一个实现MouseListener和MouseMotionListener接口的分层窗格的子类

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;public class LP extends JLayeredPane implements MouseListener, MouseMotionListener {    //分层窗格子类LP实现了两个接口JButton jButton,jButton2;int x,y,a,b,x0,y0;LP(){setLayout(new FlowLayout());    //设置一个流体布局jButton = new JButton("用鼠标拖动我");jButton2 = new JButton("用鼠标拖动我2");jButton.addMouseListener(this); //用LP自己做监视器jButton2.addMouseListener(this); //用LP自己做监视器jButton.addMouseMotionListener(this); //用LP自己做监视器jButton2.addMouseMotionListener(this); //用LP自己做监视器add(jButton,JLayeredPane.DEFAULT_LAYER);//将按钮添加到分层窗格的默认层add(jButton2,JLayeredPane.DEFAULT_LAYER);//将按钮添加到分层窗格的默认层}@Overridepublic void mouseClicked(MouseEvent mouseEvent) {}@Overridepublic void mousePressed(MouseEvent mouseEvent) {   //当鼠标点击时JComponent com = null;com = (JComponent)mouseEvent.getSource();//获取鼠标的当前对象//setLayout(com,JLayeredPane.DRAG_LAYER);a = com.getBounds().x;b = com.getBounds().y;x0 = mouseEvent.getX(); //获取鼠标在事件源中的位置坐标y0 = mouseEvent.getY();}@Overridepublic void mouseReleased(MouseEvent mouseEvent) {JComponent com = null;com = (JComponent)mouseEvent.getSource();////setLayout(com,JLayeredPane.DEFAULT_LAYER);}@Overridepublic void mouseEntered(MouseEvent mouseEvent) {}@Overridepublic void mouseExited(MouseEvent mouseEvent) {}@Overridepublic void mouseDragged(MouseEvent mouseEvent) {Component com = null;if (mouseEvent.getSource()instanceof Component){com = (Component)mouseEvent.getSource();a = com.getBounds().x;b = com.getBounds().y;x = mouseEvent.getX();  //获取鼠标源的位置y = mouseEvent.getY();a = a + x;b = b + y;com.setLocation(a-x0,b-y0);}}@Overridepublic void mouseMoved(MouseEvent mouseEvent) {}
}

然后再写一个JFrame的子类

import javax.swing.*;
import java.awt.*;public class myWindow extends JFrame {LP layeredPane; //分层窗格的子类LP 类型变量myWindow(){setTitle("实现组件的拖动");setBounds(300,300,400,400);Container con = this.getContentPane();con.setBackground(new Color(0x366728));layeredPane = new LP(); //将分层窗格实例化add(layeredPane, BorderLayout.CENTER);//window默认布局设置为中心setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);//validate();}
}

最后进行测试

public class Example10_11 {public static void main(String[] args) {myWindow myWindow = new myWindow();}
}

最后的效果图(随便拖动)

注:本篇文章写的比较仓促还有很多注意地方未改进和未提出,接下来会进一步修改

CSS

CSS 框模型概述
CSS 内边距
CSS 边框

JavaScript

ECMAScript 5 - JavaScript 5
ECMAScript 6 - ECMAScript 2015

CET4P163

grace
slight
decrease
relief
aid
continual
coach
magic
band
poisonous

Java MouseEvent事件相关推荐

  1. java实用教程——组件及事件处理——MouseEvent事件

    MouseEvent事件 任何组件上都可以发生鼠标事件,如鼠标进入组件.退出组件.在组件上方单击鼠标.拖动鼠标等都触发鼠标事件,即导致MouseEvent类自动创建一个 事件对象,事件源注册监视器的方 ...

  2. java 鼠标事件Dragged和Moved 及java显示GIF在JLabel、JButton

    本来真不想写日志的,一直用doc写东西,想写完了给个百度文库连接,慢慢发现doc已经到12页,发现慢慢很能写文档了... 而且开始慢慢的喜欢上java了,因为java的每行代码都是自己敲上很有成就感 ...

  3. java委托事件模型_JAVA授权事件模型讲解(原创)

    JAVA的授权事件模型包含三个概念:事件源,事件,事件监听器. 一,事件源:一个产生事件的对象.当这个对象的内部状态改变时,事件就会产生.一个事件源必须注册一个事件监听器已使监听器能够可以接受一个特定 ...

  4. Java中事件监听机制

    Java中事件监听机制 一.事件监听机制的定义 要想了解Java中的事件监听机制,首先就要去了解一下在Java中事件是怎样去定义的呢!在使用Java编写好一个界面后,我们就会对界面进行一些操作,比如, ...

  5. java实现分发_关于JAVA中事件分发和监听机制实现的代码实例

    [实例简介] 关于JAVA中事件分发和监听机制实现的代码实例,绝对实用代码,有说明. [实例截图] [核心代码] JavaEventDispatch ├── bin │   └── com │   └ ...

  6. java键盘事件键值表_Java的20年:重大事件的时间表

    java键盘事件键值表 翻译自: https://www.javacodegeeks.com/2015/12/2-decades-java-timeline-notable-events.html j ...

  7. java监听机制_详解java的事件监听机制和观察者设计模式

    首先说说监听器: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执 行. java的事件监 ...

  8. 谁说 Java 要过时?2017 年 Java 大事件回顾!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 在过去的一年中,Java 历经了许多变化.在今年年初,Java EE 处于一个不确定的状态, ...

  9. 谁说 Java 要过时?2017 年 Java 大事件一览及未来前瞻

    在过去的一年中,Java 历经了许多变化.在今年年初,Java EE 处于一个不确定的状态,Java 9 版本也推迟了它的发布日期.在 2016 年的 JavaOne 上,甲骨文宣布了解决平台的计划和 ...

最新文章

  1. jquery java json转字符串_用jQuery以及JSON包将表单数据转为JSON字符串
  2. VScode配置ESlint自动修复格式化
  3. Failed to connect to driver at XXXXXXx
  4. 如何使用Tasklist命令
  5. 深入浅出 Java CMS 学习笔记
  6. Thinkphp内核无限坐席在线客服系统源码
  7. Linux系统配置成简单的路由器
  8. 双层感知机解决异或问题
  9. 接口返回[object,Object]解决方法
  10. 集合类ArrayList、HashMap、HashSet线程不安全
  11. DICOM医学图像处理:利用fo-dicom发送C-Find查询Worklist
  12. 批量反编译class
  13. 论文_毕业设计复现机器学习模型案例大本营(收藏)
  14. 精确率、准确率、召回率、ROC、AUC的概念,计算方式和代码实现
  15. 实验室建立计量管理体系的重要性和意义
  16. CentOS 压缩解压
  17. 软件测试需要学习哪些技能?
  18. android 写出棋盘效果,Android五子棋棋盘的绘制
  19. 【C/C++ 经典小程序(一)】
  20. RestTemplate post提交方式的一些总结

热门文章

  1. object标签与embad掉钱_OBJECT和EMBED标签
  2. CString字符串查找和截取与去空格(Find,FindOneOf,ReverseFind,Left,Mid,Right,substr,TrimLeft和TrimRight)
  3. 用差分方程写三角形的重心
  4. CISCO路由器配置基础(2)
  5. 计算机体系结构的铁律(iron law)
  6. 基于Java Swing 飞机大战游戏
  7. python的ppt报告_python可以写PPT吗
  8. html ios风格日历,极致演绎iOS7风格 简约日历应用Cal体验
  9. Java基础之System.out.println(打印个七彩颜色字符串吧!)
  10. 大连理工c语言第三次上机作业,大连理工大学工数上机作业