如何在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 程序实现鼠标点击 键盘等事件
这个用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,”测试功能”);
}
}