public class PopupMenu extends JFrame {
    private JPopupMenu menu;
    private JTextArea text;    public PopupMenu() {
        JMenuItem m;
        MenuItemListener mil = new MenuItemListener();        menu = new JPopupMenu();
        text = new JTextArea(15, 30);
        m = new JMenuItem("Item1");
        m.addActionListener(mil);
        menu.add(m);
        m = new JMenuItem("Item2");
        m.addActionListener(mil);
        menu.add(m);
        m = new JMenuItem("Item3");
        m.addActionListener(mil);
        menu.add(m);        text.addMouseListener(new MouseListener() {
            public void mouseClicked(MouseEvent e) {
            }            public void mouseEntered(MouseEvent e) {
            }            public void mouseExited(MouseEvent e) {
            }            public void mousePressed(MouseEvent e) {
            }            public void mouseReleased(MouseEvent e) {
                if (e.isPopupTrigger()) {
                    menu.show(text, e.getX(), e.getY());
                }
            }
        });        getContentPane().add(text);
    }    private class MenuItemListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            text.setText(((JMenuItem) e.getSource()).getText());
        }
    }    public static void main(String[] args) {
        PopupMenu frame = new PopupMenu();        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

解决方案 »

  1.   

    修改原textArea对象的鼠标监听类即可
      

  2.   

    to registered(已注册):
    text.addMouseListener(new MouseListener() {
                public void mouseClicked(MouseEvent e) {
                }            public void mouseEntered(MouseEvent e) {
                }            public void mouseExited(MouseEvent e) {
                }            public void mousePressed(MouseEvent e) {
                }            public void mouseReleased(MouseEvent e) {
                    if (e.isPopupTrigger()) {
                        menu.show(text, e.getX(), e.getY());
                    }
                }
            });
    这一段可以简单一点。
    text.addMouseListener(new MouseAdapter()
            {
              public void mouseReleased(MouseEvent e)
              {
                if (e.isPopupTrigger())
                {
                  menu.show(text, e.getX(), e.getY());
                }          }
            });
      

  3.   

    to inrunlxf() 
    你用的是什么开发环境?
    JBuilder还是什么?
    to sealwzq(幻影)
    你编译运行一下就知道能不能写短点了
      

  4.   

    修改原textArea对象的鼠标监听类即可,拿registered(已注册)的去覆盖原来的
    ^^^^^^text.addMouseListener(....);。BTWto sealwzq(幻影)registered(已注册)乃高人也,功力在你之上
      

  5.   

    to registered(已注册):
    我运行起来了!而且结果一样的
      

  6.   

    to ntzls(三星堆):
    知道他是高人,所以我是在运行之后才说的,我确实运行起来了
      

  7.   

    不可能覆盖掉原来的,你只能在它原来弹出来的菜单上做文章,将菜单项改变,想禁止掉java本身弹出的菜单是没有办法的。
      

  8.   

    首先声明本人不是什么高手
    CSDN高手如云,相比之下我只能算一个比较爱混分的菜鸟to sealwzq(幻影):不知你用的什么版本的JDK,最新版(1.4.2_05)编译会发生错误
    PopupMenu.java:48: <anonymous PopupMenu$1> is not abstract and does not override abstract method mousePressed(java.awt.event.MouseEvent) in java.awt.event.MouseListener
                public void mouseReleased(MouseEvent e) {
                            ^
    1 errorto 楼主:
    手写的GUI默认是没有菜单的
    有菜单一般是开发工具自动生成的
    你可以在你的开发工具中查找相应的GUI选项来关闭自动生成菜单的功能
      

  9.   

    那就是JB将剩余代码自动生成了
    Java 语法规定:
    实现一个接口必须实现其中的所有方法
    有的时候太过自动化也容易引起概念混淆...