import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class SwingDemo extends JFrame implements MouseListener,ActionListener
{
private JMenuBar bar;
private JMenu file,file2;
private JMenuItem red;
private JMenuItem open,save;
private JMenuItem yellow;
private JMenuItem blue;
private JPopupMenu pop;
public SwingDemo()
{
bar=new JMenuBar();
file=new JMenu("文件");
file2=new JMenu("文件2");
open=new JMenuItem("打开");
save=new JMenuItem("保存");
bar.add(file);
file.add(file2);
file2.add(open);
file2.add(save);
this.setJMenuBar(bar);
red=new JMenuItem("红色");
yellow=new JMenuItem("黄色");
blue=new JMenuItem("蓝色");
pop=new JPopupMenu();
pop.add(red);
pop.add(yellow);
pop.add(blue);
pop.addMouseListener(this);
} public static void main(String args[])
{
SwingDemo frame=new SwingDemo();
frame.setDefaultCloseOperation(3);
frame.setSize(400,300);
frame.setVisible(true);
} public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
if(e.getModifiers()==e.BUTTON3_MASK)
pop.show(this,e.getX(),e.getY());
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
} public void actionPerformed(ActionEvent e) {

}
}

解决方案 »

  1.   

    MouseEvent.getButton()得到是那个鼠标按键更改了状态
      

  2.   

    我以前碰到过这个问题,看看这个帖子:http://community.csdn.net/Expert/topic/5139/5139542.xml?temp=.9667475
      主要是由于JPopupMenu没有实现MouseListener,你添加addActionListener再写部分相关代码就可以了
      

  3.   

    另外楼主还要注意JPopupMenu要实现show(Component base,int x, int y)方法还能显示
       其中base是你要点击时显示JPopupMenu的组件,x,y,是位置.
      

  4.   

    pop.add(blue);
    ……
    getContentPane().addMouseListener(this);