import java.awt.Component;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.JFrame;
public class T4 extends JFrame
{
T4()
{
setSize(500,600);
final PopupMenu pp = new PopupMenu("asdf");
MenuItem m = new MenuItem("love");
pp.add(m);
add(pp);
m.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
MenuItem temp = (MenuItem)e.getSource();
String str = temp.getLabel();
if(str=="love")
 System.out.println("love");
}

});
addMouseListener(new MouseAdapter(){
 public void mouseReleased(MouseEvent e) {
 pp.show((Component)e.getSource(),e.getX(), e.getY());  } });
setVisible(true);
}
public static void main(String[] args)
{
new T4();
}}

解决方案 »

  1.   


      addMouseListener(new MouseAdapter() {
                public void mouseReleased(MouseEvent e) {
                    int mods = e.getModifiers();
                    // 鼠标右键
                    if ((mods & InputEvent.BUTTON3_MASK) != 0) {
                        // 弹出菜单
                        pp.show((Component) e.getSource(), e.getX(), e.getY());
                    }
                }
            });
      

  2.   

    答:一个建议:代码可改为:addMouseListener(new MouseAdapter(){
                     public void mouseReleased(MouseEvent e) {
                         if(e.isPopupTigger())//当事件是Popup触发器事件时
                         pp.show((Component)e.getSource(),e.getX(), e.getY());                 }        });
    另外很重要的是:对mousePressed(..)与mouseClicked(..)都要加上上述同样的代码(来检测是不是Popup触发器事件),若是,则弹出PopupMenu.
      

  3.   

    答:e.isPopupTrigger()打少了一个字母r