java学习——90.快捷菜单
快捷菜单也是一组菜单项或子菜单的容器,与窗口菜单不同的是,它是通过右键弹出的。
快捷菜单类为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();
}
}
其运行结果为:
单击右键,并选中“复制”菜单项,在文本区中会显示文字“复制”。
选中其他菜单项,也同样显示其他文字。