java右键事件

如何在java中实现右键菜单

希望这篇文章能帮各位兄弟省点时间。在java中使实现右键菜单十分简单,只需用到一个控件:PopupMenu.

首先,需要声明一个PopupMenu对像。

PopupMenu popupMenu1 = new PopupMenu();

然后新建一些子菜单,这里我们使用建立三个菜单项

MenuItem menuItem1 = new MenuItem();

MenuItem menuItem2 = new MenuItem();

MenuItem menuItem3 = new MenuItem();

然后再出初化,并加入监听事件中:

menuItem1.setLabel(“菜单1”);

menuItem1.addActionListener(new java.awt.event.ActionListener() { //菜单1的事件监听

public void actionPerformed(ActionEvent e) {

menuItem1_actionPerformed(e); //菜单事件函数

}

});

menuItem2.setLabel(“菜单2”);

menuItem3.setLabel(“菜单3”);

popupMenu1.add(menuItem1);

popupMenu1.add(menuItem2);

popupMenu1.add(menuItem3);

//在this中加入popupMenu1

add(popupMenu1);

这时,菜单已经加进程序中了,现在我们需要做的就是在点击右键时显示。

先在init中加入鼠标的单击事件,

this.addMouseListener(new java.awt.event.MouseAdapter() {

public void mousePressed(MouseEvent e) {

this_mousePressed(e);

}

});

再在this_mousePressed(e);中将菜单显示出来

void this_mousePressed(MouseEvent e) {

int mods=e.getModifiers();

//鼠标右键

if((modsInputEvent.BUTTON3_MASK)!=0){

//弹出菜单

popupMenu1.show(this,e.getX(),e.getY());

}

}

//菜单1事件

void menuItem1_actionPerformed(ActionEvent e) {

//菜单事件1

}

好了,讲到这里已经全部结束,是不是非常简单啊

这里有一个继承Panel类的完整的例子

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Panel1 extends JPanel {

PopupMenu popupMenu1 = new PopupMenu();

MenuItem menuItem1 = new MenuItem();

MenuItem menuItem2 = new MenuItem();

MenuItem menuItem3 = new MenuItem();

public Panel1() {

try {

jbInit();

}

catch(Exception ex) {

ex.printStackTrace();

}

}

void jbInit() throws Exception {

this.setLayout(null);

menuItem1.setLabel(“菜单1”);

menuItem1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) {

menuItem1_actionPerformed(e);

}

});

menuItem2.setLabel(“菜单2”);

menuItem3.setLabel(“菜单3”);

this.addMouseListener(new java.awt.event.MouseAdapter() {

public void mousePressed(MouseEvent e) {

this_mousePressed(e);

}

});

popupMenu1.add(menuItem1);

popupMenu1.add(menuItem2);

popupMenu1.add(menuItem3);

add(popupMenu1);

}

void this_mousePressed(MouseEvent e) {

int mods=e.getModifiers();

//鼠标右键

if((modsInputEvent.BUTTON3_MASK)!=0){

//弹出菜单

popupMenu1.show(this,e.getX(),e.getY());

}

}

void menuItem1_actionPerformed(ActionEvent e) {

//菜单事件

}

}

好了,你试试看吧,这个还是我在远标java那边接触到的知识点。

java右键事件

Java 程序实现鼠标点击 键盘等事件

这个用MouseListener里的mouseEntered(MouseEvent

e)方法。

鼠标进入区域就产生事件反应。

如果之前申明了点击事件可以在entered时间里呼叫clicked事件。

java鼠标点击事件怎么做?

java鼠标点击事件的方法如下:

span style=”font-family:Verdana;”事件源/span.addMouseListener(new MouseAdapter() {//建立事件处理机制  

   @Override  

   public void mouseClicked(MouseEvent e) {  

       if(e.getButton()==e.BUTTON1){//点击鼠标左键  

           int x=e.getX();  

           int y=e.getY();  

           String str=”您点击的是左键,鼠标当前点击位置的坐标是(” + x + “,” + y+”)”;  

           label.setText(str);  

       }else if(e.getButton()==e.BUTTON2){//点击鼠标滑轮  

           int x=e.getX();  

           int y=e.getY();  

           String str=”您点击的是滑轮,鼠标当前点击位置的坐标是(” + x + “,” + y+”)”;  

           label.setText(str);   

       }  

       else if(e.getButton()==e.BUTTON3){//点击鼠标右键  

           int x=e.getX();  

           int y=e.getY();  

           String str=”您点击的是右键,鼠标当前点击位置的坐标是(” + x + “,” + y+”)”;  

           label.setText(str);       

       }  

   }  

});

e.getButton()返回值分别为NOBUTTON、BUTTON1、BUTTON2、BUTTON3,分别代表着无点击、左击、中间键、右击三种情况。

给Java初学者的建议:

1,不一定要把java学深入。有多少人搞程序是喜欢这个的,搞程序一半是因为钱多,一半是因为晋升公平。

2,初学者学java至少要脱产半年的时间才能算了解了,才适合被人带,因为至少半年的时间,才知道遇到问题如何解决,有的人需要更长的时间。现在有很多人已经有5年左右的经验了,在他们的压制下,java初学者很难有逆袭的机会了。

3,行业环境,现在数据存储,后台打包的方案的创业公司已经有苗头,也就是说,后台开发已经被集中解决,日后会越来越成熟,这就是意味着,java招聘需要有经验的人,也就是说,必须熬几年后才能有突破。

4,java离市场较远,所以呢?java开发人员很难有一个大的突破。

5,程序里面有变量所以解决了一系列类似的问题,所以注定了程序必须提供大批服务时才能有高收益。

JAVA右键菜单事件

public RightMouse() {

JMenuItem mAll, mCopy, mCut, mPaste, mDel;

menu = new JPopupMenu();

mAll = new JMenuItem(“全选(A)”);

menu.add(mAll);

mCopy = new JMenuItem(“复制(C)”);

menu.add(mCopy);

mCut = new JMenuItem(“剪切(T)”);

menu.add(mCut);

mPaste = new JMenuItem(“粘贴(P)”);

menu.add(mPaste);

mDel = new JMenuItem(“删除(D)”);

menu.add(mDel);

this.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e) {

if (e.getButton()==MouseEvent.BUTTON3) {

//弹出右键菜单

menu.show(RightMouse.this, e.getX(), e.getY());

}

}

});

mAll.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.out.println(“点击了全选菜单”);

}

});

}

java文本框,点击右键,产生右键事件,出现弹出式菜单,三个菜单选项(复制,粘贴,剪切)

在java.awt包中有两个类可以用于弹出式菜单,PopupMenu(弹出式菜单),MenuItem(菜单项),

在 java.awt.event 包的MouseListener与MouseEvent 可用于鼠标事件

下面是代码(是从别的地方借用过来的,删除了一些与此问题无关的内容):

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

public class PopupMenuDemo extends JFrame implements ActionListener

{

JButton btnTest=new JButton(“Test”);

JTextArea textArea=new JTextArea();

PopupMenu pMenu=new PopupMenu(); //创建弹出式菜单,下面三项是菜单项

MenuItem mItemCopy=new MenuItem(“复制”);

MenuItem mItemPaste=new MenuItem(“粘贴”);

MenuItem mItemCut=new MenuItem(“剪切”);

MouseAdapter mouseAdapter=new MouseAdapter()//监听鼠标事件

{

public void mouseClicked(MouseEvent event)

{

if(event.getButton()==MouseEvent.BUTTON3)//只响应鼠标右键单击事件

{

pMenu.show(textArea,event.getX(),event.getY());//在鼠标位置显示弹出式菜单

}

}

};

ActionListener menuAction=new ActionListener()//响应单击菜单项的事件,只是示例,

{//具体内容可自己编写

public void actionPerformed(ActionEvent e)

{

MenuItem item=(MenuItem)e.getSource();

if(item==mItemCopy) //单击了“复制”菜单项

{

JOptionPane.showMessageDialog(null,”复制”);

}

else if(item==mItemPaste) //“粘贴”菜单项

{

JOptionPane.showMessageDialog(null,”粘贴”);

}

else

{

JOptionPane.showMessageDialog(null,”剪切”); //“剪切”菜单项

}

}

};

public PopupMenuDemo()

{

setTitle(“Test”);

setSize(300,300);

setResizable(false);

setLocationRelativeTo(null);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

add(btnTest,BorderLayout.NORTH);

add(textArea,BorderLayout.CENTER);

textArea.add(pMenu); //弹出式菜单加入到文本框中,否则不能显示

textArea.addMouseListener(mouseAdapter); //文本框加入鼠标监听器

pMenu.add(mItemCopy); //菜单项的单击事件监听器

mItemCopy.addActionListener(menuAction);

pMenu.add(mItemPaste);

mItemPaste.addActionListener(menuAction);

pMenu.add(mItemCut);

mItemCut.addActionListener(menuAction);

btnTest.addActionListener(this);

}

public static void main(String… args)

{

new PopupMenuDemo().setVisible(true);

}

public void actionPerformed(ActionEvent e)

{

JOptionPane.showMessageDialog(null,”测试功能”);

}

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月28日 10:31:05
下一篇 2024年3月28日 10:38:18

相关推荐

  • 包含java虚拟机64位下载的词条

    哪里可以下载windows7家庭版32位 今天小编给大家带来win732位家庭精简版下载地址推荐,都是免激活的,直接下载安装即可。 (32位)windows7官方原版iso文件下载地址三:雨林木风YLMFWin732位原版旗舰版iso镜像下载可启动映像文件,可以用刻录软件刻录,也可用虚拟光驱载入使用,增强了实用性。 下载地址风林火山flhsghostwin7…

    2024年5月18日
    3500
  • 网络安全事件知识宣传图片,2019网络安全事件典型案例

    关于2022年网络安全的总结范文10篇 1、根据兴安盟互联网信息办公室关于“___届国家网络安全宣传周”活动方案的要求,我校在校领导的大力支持和协助下,开展以“共建网络安全、共享网络文明”为主题的网络安全宣传周活动,并取得了良好的效果。 2、加强网络安全认真部署师生网络安全意识 为切实抓好这次活动,11月24日学校召开了校委会,对整个网络信息安全宣传活动作了…

    2024年5月18日
    3700
  • java监听消息队列,java监听事件和处理事件由什么完成

    消息队列基础 解耦: 如果使用多线程进行异步,这样会造成与下游系统耦合,每对接一个系统,会增加一个接口调用,然后重新发布系统。使用消息队列,将消息发布到消息队列中,下游系统直接监听审批过程消息来感知审批进度,达到解耦目的。 是生产者先将消息投递一个叫队列的容器中,然后再从这个容器中取出消息,最后再转发给消费者。 RabbitMQ是由Erlang语言开发,基于…

    2024年5月18日
    4000
  • java取modelandview的简单介绍

    Java中ModelAndView是做什么的? java modelandview是什么,让我们一起了解一下?modelandview是当控制器处理完请求时,会将包含视图名称或视图对象以及一些模型属性的ModelAndView对象返回到DispatcherServlet。因此,经常需要在控制器中构造ModelAndView对象。 ModelAndView是S…

    2024年5月18日
    4000
  • java=变量,java变量的基本属性

    Java语法介绍(三):变量 1、为了在Java中存储一个数据,必须将它容纳在一个变量之中。而数据类型决定了一个变量可以赋给什么值以及对变量进行什么样的操作。 2、在JAVA中我们通过三个元素来描述变量:变量类型,变量名以及变量值。变量,就是可以改变的量。例子:int 表示能存储整数类型的数据类型。 int a;表示你定义了一个存储整数的变量。 3、变量是程…

    2024年5月18日
    4500
  • java现在主要用于什么地方,java一般用来干嘛

    java是干什么的 我们常常说的Java,首先它是一种计算机编程语言,程序员用它来和计算机交流,把要求和设想用Java语言表达出来,这个过程就是我们所说的使用Java编程,所以我们说Java是一种计算机编程语言。 java是开发网站、写游戏、开发软件的。开发网站:Java在开发高访问、高并发、集群化的大型网站方面很有优势,因此许多网站都是用Java写的。Ja…

    2024年5月18日
    4400
  • 包含1009.说反话(20)java的词条

    如何用JAVA撷取一段文字的前20个作为返回结果? java.lang.string.splitsplit 方法将一个字符串分割为子字符串,然后将结果作为字符串数组返回。stringObj.split([separator,[limit]])参数stringObj 必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。 读取wor…

    2024年5月18日
    3600
  • java类名.类名.属性,java类名是啥

    定义一个Java类,类名Cricle,圆属性为半径,已知半径为5,编程实现出该圆… 1、printf(圆的周长=%lf\n圆的面积=%lf\n,l,s);} 或者你可以直接写 includestdio.h void main(){ printf(圆的周长=3415926\n圆的面积=7539815f\n);} C语言是一门通用计算机编程语言,应用…

    2024年5月18日
    3400
  • java多任务,java 多任务

    线程在java编程中的作用 线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一个对共享资源进行操作,而不是同时进行操作。因此,关于线程同步,需要牢牢记住的第一点是:线程同步就是线程排队。同步就是排队。线程同步的目的就是避免线程“同步”执行。 在Java语言中,不仅语言本身有多线程的支持,可以方便地生成多线程的程序,而且运行环境也利用多线程的应用程…

    2024年5月18日
    3400
  • javasocket心跳实现,java实现心跳机制

    java是否可以实现心跳的程序 1、Timer貌似可以实现,给你个demo看看是不是你想要的,具体的实现就要你自己去查阅api或者去百度博客什么的了。。 2、\x0d\x0a心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。 3、心跳的也有现成的,不过依赖别的类。大概贴一下,就是这么个…

    2024年5月18日
    5200

发表回复

登录后才能评论



关注微信