分享

java学习——90.快捷菜单

 pythonjava学习 2021-04-06

快捷菜单也是一组菜单项或子菜单的容器,与窗口菜单不同的是,它是通过右键弹出的。

快捷菜单类为JPopupMenu,其类的声明如下:

public class JPopupMenu extends JComponent implements Accessible,MenuElement

{

    public JPopupMenu()

    public JMenuItem add(JMenuItem item)  //添加菜单项

    public void addSeparator()//添加分隔线

    public void show(Component invoker, int x, int y)

         //(x,y)位置处显示快捷菜单,invoker指定快捷菜单所依附的组件

}

因为大多数时候快捷菜单通过右键弹出的,所以其动作要判断到底是鼠标左键还是右键,即要实现对鼠标的监听。

鼠标监听的接口是:MouseListener

示例:

在文本区中添加快捷菜单。

在文本区中点击鼠标右键,弹出快捷菜单如下图所示:

在哪个位置点击鼠标右键,即在相应位置弹出快捷菜单。

其完整代码如下:

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import javax.swing.event.*;

public class poplearn extends JFrame implements ActionListener,MouseListener{

    private JTextArea text;

    private JPopupMenu popmenu;

    private JMenuItem item[];

    public poplearn(){

       super("菜单学习");

       this.setLocation(200,200);

       this.setSize(600, 600);

       this.setVisible(true);

       text=new JTextArea();

       text.addMouseListener(this);//为文本区注册鼠标事件监听器

       this.getContentPane().add(new JScrollPane(text));

       popmenu=new JPopupMenu();//创建快捷菜单

       String s[]={"复制","剪切","粘帖","删除"};//快捷菜单中菜单项的标题

       item=new JMenuItem[s.length];//创建菜单项数组

       for(int i=0;i<s.length;i++)

       {

           item[i]=new JMenuItem(s[i]);//创建菜单项

           popmenu.add(item[i]);//将菜单项加入到快捷菜单

           item[i].addActionListener(this);//为菜单项注册动作事件监听器

       }

    }

    publicvoid mouseClicked(MouseEvent e){

       if(e.getButton()==3)//如果单击的是鼠标右键

           this.popmenu.show(text,e.getX(),e.getY());//弹出快捷菜单,位置捕捉鼠标的位置

    }

    public void mouseEntered(MouseEvent e){}

    public void mouseExited(MouseEvent e){}

    public void mousePressed(MouseEvent e){}

    public void mouseReleased(MouseEvent e){}

    public void actionPerformed(ActionEvent e){//菜单项的动作

       if(e.getSource()==item[0])

           text.setText("复制");

       if(e.getSource()==item[1])

           text.setText("剪切");

       if(e.getSource()==item[2])

           text.setText("粘贴");

       if(e.getSource()==item[3])

           text.setText("删除");

    }

    public static void main(String args[]){

       new poplearn();

    }

}

其运行结果为:

单击右键,并选中“复制”菜单项,在文本区中会显示文字“复制”。

选中其他菜单项,也同样显示其他文字。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多