你这样做,在窗体中点鼠标右键就有弹出菜单了
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;public class color1
    extends JFrame {
  int x;
  int y;  JMenuBar jmb = new JMenuBar();
  JMenu jm1 = new JMenu("File");
  JMenu jm2 = new JMenu("View");
  JMenuItem jmi1 = new JMenuItem("Exit");
  JRadioButton jmi2 = new JRadioButton("red");
  JRadioButton jmi3 = new JRadioButton("green");
  JRadioButton jmi4 = new JRadioButton("blue");
  ButtonGroup bg = new ButtonGroup();
  JPopupMenu jpm = new JPopupMenu();
  JMenuItem ji = new JMenuItem("cut");
  public color1() {
    this.setJMenuBar(jmb);
    jmb.add(jm1);
    jmb.add(jm2);
    jm1.add(jmi1);
    jm2.add(jmi2);
    jm2.add(jmi3);
    jm2.add(jmi4);
    bg.add(jmi2);
    bg.add(jmi3);
    bg.add(jmi4);
    jpm.add(ji);
    this.addMouseListener(new java.awt.event.MouseAdapter() {
      public void mouseReleased(java.awt.event.MouseEvent evt) {
        if (evt.isPopupTrigger()) {
          jpm.show(evt.getComponent(), evt.getX(), evt.getY());
        }
      }
    });    jmi1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        System.exit(0);
      }
    });    this.setSize(400, 450);
    this.setVisible(true);
  }  public static void main(String[] agrs) {
    color1 c = new color1();
    c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

解决方案 »

  1.   

    谢谢zrtl(刚从软件园回来)的回答.
    再问一下,这个菜单只能注册在最底下那层吗?我注册在mypanel上为什么就不行呢.
      

  2.   

    你想把菜单把在哪个对象上弹出?
    在需要弹菜单的对象上做add(ji)就可以了
    比如List.add(ji)或Panel.add(ji)
    你把菜单做到内部类里没办法加载
      

  3.   

    说错了,应该是更改鼠标动作监听的对象就可以了
    this.addMouseListener(new java.awt.event.MouseAdapter() 
    把这个this改成你的对象就行了,this默认情况下表示当前的Frame
      

  4.   

    zrtl(刚从软件园回来),你的方法,还真行,不错,学习!
      

  5.   

    to: linlimin2100(天堂马贼) 
    底层的背景色这样设置
    this.getContentPane().setBackground(Color.BLUE);如果是面板就这样
    jPanel1.setBackground(Color.RED);如果要自定义颜色如下:
    jPanel1.setBackground(new Color(144, 39, 175));
    三个数字分别代表红绿蓝的深度值
      

  6.   

    谢谢 zrtl(刚从软件园回来) 帮助,现在结贴