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