这篇文章对 MouseEvent 想说的主要是关于鼠标右键弹出菜单的一些体会

关于MouseEvent的一些信息
事件名称:MouseEvent
事件监听接口:MouseListener
需要注意的是,这个接口有五个方法,分别响应
1.按下
2.释放
3.单击(按下后释放)
4.进入(控件区域)
5.离开(控件区域)
这五个动作,五个方法分别是:

public void mouseReleased(MouseEvent e);//鼠标按键被释放是被触发public void mousePressed(MouseEvent e);//鼠标按键被按下时被触发public void mouseExited(MouseEvent e);//光标移除组件时被触发public void mouseEntered(MouseEvent e);//光标移入组件时被触发public void mouseClicked(MouseEvent e);//发生单击事件时被触

另外,与其相似的还有一个抽象类MouseAdapter类,因为MouseListener里面有这么些方法,而这些方法不一定都是我们所需要的,所以引入MouseAdapter抽象类(是类,不是接口,所以在创建监听者时,用的是extends关键字),里面有系统写好的方法(这些方法没有方法体,就是空方法),只用重写需要的方法就行了。

常用方法:

方法名称 说明
getSource() 用来获得触发组件,返还Object对象
getButton() 获取按下,释放,单击的 int 值
getClickCount() 获取单击按键的次数

如果要知道鼠标的操作(左键,滚轮,右键),可以通过静态常量判断由 getButton() 方法返回的 int 型值代表的键来获取:

静态常量 常量值 代表的键
BUTTON1 1 鼠标左键
BUTTON2 2 鼠标滚轮
BUTTON3 3 鼠标右键

对于右键弹出菜单的实现,MouseEvent里有这么一个方法,isPopupTrigger(),它的原型是这样的:

public boolean ispopuptrigger()

它返回此鼠标事件是否为该平台(比如windows平台)的弹出菜单触发事件。说简单点就是用来判断是否应该弹出右键菜单。
这个函数的存在,是由于不同的平台弹出菜单的方式往往不同,但是又为了实现它的跨平台性,所以干脆不管平台是什么方式弹出,只判断是否是是弹出动作。

下面尝试实现右键单击弹出菜单:

需要导入的类:

import java.awt.event.MouseEvent;  //鼠标事件
import java.awt.event.MouseListener;
import javax.swing.JPopupMenu;  //弹出式菜单
import javax.swing.JMenuItem;  //这是 菜单项类

基本步骤
1.创建一个弹出式菜单,并加入一个菜单项

JPopupMenu jpopupmenu1 = new JPopupMenu();   //弹出式菜单
JMenuItem jmenuitem1 = new JMenuItem("菜单");  //菜单项
jpopupmenu1.add(jmenuitem1);   //弹出式菜单添加一个菜单项

2.创建鼠标监听者,实现MouseListener接口,并重写里面的五个类。

class mouselistener implements MouseListener
{JPopupMenu jpopupmenu2;  //一个弹出式菜单对象mouselistener(JPopupMenu jpopupmenu) //构造方法,将弹出式菜单传进来{jpopupmenu2 = jpopupmenu;}//一自己写一个显示的方法public void display(MouseEvent e){if(e.isPopupTrigger()) //判断是否是弹出菜单动作{jpopupmenu2.show(e.getComponent(), e.getX(),e.getY())//这是JPopupMenu类里的显示方法//第一个参数是事件源,后两个是要显示的弹出菜单的左上角坐标//MouseEvent中的三个方法,getComponent()是获取响应控件//getX(),e.getY()是获取鼠标横纵坐标}}//然后是重写五个方法,不过不用每个方法里都添加display方法,对于我使用的//win7系统(),isPopupTrigger()判断为true的是mouseReleased方法,所以//只需要在mouseReleased方法添加display就好了,其他四个方法都为空。public void mouseReleased(MouseEvent e){this.display(e);}public void mousePressed(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseClicked(MouseEvent e){}
}

4.由于是在窗口内弹出,让JFrame类的窗口对象添加鼠标监听者

JFrame jframe = new JFrame("弹出式菜单");//窗口
jframe.addMouseListener(new mouselistener(jpopupmenu1));  //是主窗口响应鼠标事件

下面是完整的代码:

public class view
{public static void main(String[] args) {JFrame jframe = new JFrame("弹出式菜单");//窗口jframe.setBounds(250, 300, 300, 250);JPopupMenu jpopupmenu1 = new JPopupMenu();   //弹出式菜单JMenuItem jmenuitem1 = new JMenuItem("菜单");jpopupmenu1.add(jmenuitem1);   //弹出式菜单添加一个菜单项class mouselistener implements MouseListener{JPopupMenu jpopupmenu2;  //一个弹出式菜单对象mouselistener(JPopupMenu jpopupmenu)   //构造函数{jpopupmenu2 = jpopupmenu;}//自己写的一个显示的方法public void display(MouseEvent e){if(e.isPopupTrigger()){jpopupmenu2.show(e.getComponent(), e.getX(),e.getY());}}public void mouseReleased(MouseEvent e){this.display(e);}public void mousePressed(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseClicked(MouseEvent e){}}jframe.addMouseListener(new mouselistener(jpopupmenu1));  //是主窗口响应鼠标事件jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭时操作jframe.setVisible(true);   //设置可见}
}

最后的弹出式菜单运行结果:

参考链接:
https://blog.csdn.net/qq_36761831/article/details/81564119
https://blog.csdn.net/zouyang2014/article/details/62418435
https://blog.csdn.net/lirx_tech/article/details/50822307
http://www.169it.com/article/1265254395042505837.html
https://blog.csdn.net/u010142437/article/details/8915975
https://wenda.so.com/q/1363371411060083?src=140

java-swing-事件监听-MouseEvent-右键弹出菜单相关推荐

  1. 13、Java Swing事件监听:事件处理模型和事件监听器

    事件表示程序和用户之间的交互,例如在文本框中输入,在列表框或组合框中选择,选中复选框和单选框,单击按钮等.事件处理表示程序对事件的响应,对用户的交互或者说对事件的处理是事件处理程序完成的. 当事件发生 ...

  2. java swing事件监听_Java swing(awt):事件监听机制的实现原理+简单示例

    (1)实现原理 事件监听机制的实现: 参考图:事件模型_ActionEvent 为了节省资源,系统无法对某个事件进行实时的监听.故实现的机制是当发生某个事件后,处理代码将被自动运行,类似钩子一般.(回 ...

  3. 安卓键盘事件监听,键盘弹出收起

    一.键盘事件监听 1.在mainifest.xml 中设置activity模式 ```<activityandroid:name=".ui.activity.MainActivity& ...

  4. JAVA Swing 事件监听

    EventListner 接口 它是一个标记接口,每一个监听器接口扩展.这个类定义在java.util包. 类声明 以下是声明java.util.EventListener接口: public int ...

  5. Java中事件监听机制

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

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

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

  7. java右键弹出菜单_javascript自定义右键弹出菜单实现方法

    本文实例讲述了javascript自定义右键弹出菜单实现方法.分享给大家供大家参考.具体实现方法如下: 无标题页 var oPopup = window.createPopup(); function ...

  8. DirectUI界面编程(六)实现右键弹出菜单

    本节向大家介绍一下右键弹出菜单是如何实现的.效果如下,在窗口中点击鼠标右键弹出菜单,点击菜单项能够响应菜单点击事件. 使用Duilib库实现的弹出菜单,实际上也是一个Windows窗口,因此我们需要创 ...

  9. 右键弹出菜单和快捷键的设置

    写MFC,少不了用到菜单和快捷键,此处我用到了右键菜单.我的项目是一个播放器的实现,那么在屏幕中央右键点击,应该会弹出右键菜单,比如播放,暂停等,如我这样: 对应的每一个菜单应该还有相应的快捷键.那么 ...

最新文章

  1. ADAS处理器集成功能安全单片机MCU
  2. html盒子宽高,css盒子模型之宽度和高度
  3. java删除本地文件_读取Properties文件六种方法
  4. window系统下安装mysql5.7教程
  5. 学Java技术,这些问题要避免!
  6. 【DP】Bovine Genetics G(P7152)
  7. zygoteinit.java_源码跟踪之启动流程:从ZygoteInit到onCreate
  8. 随机生成元素升序向量_实验二MATLAB运算基础 -
  9. CCCC-GPLT L1-037. A除以B 团体程序设计天梯赛
  10. Android中的短信收不到问题
  11. python gif压缩_压缩gif的正确姿势
  12. win7nodejs压缩包配置环境变量
  13. 去掉Win7快捷方式小箭头
  14. conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge遇到的报错
  15. 最大似然函数,琴生不等式
  16. usb otg type-c的硬件介绍
  17. 使用CSS实现首行缩进效果
  18. NYIST_ACM Ranking List FAQ
  19. 10W+字C语言硬核总结(二),值得阅读收藏!
  20. 信息安全与网络空间安全

热门文章

  1. 【红外DDE算法】一种应用于高动态范围红外可视化的算法
  2. Java项目:汽车出租管理系统(java+SSM+JSP+jquery+Mysql)
  3. 计算日期的下一天日期
  4. OpenCV 4.7 正式发布
  5. 通信感知一体化关键技术与挑战
  6. Orientdb基本操作
  7. 第二十篇玩转【斗鱼直播APP】系列之“趣玩”界面展示
  8. js 的 forEach()函数
  9. 忙里偷闲写道acwing 1170 ~差分约束
  10. LINQ学习(一):LINQ初认识