2011-03-09 44 views
0

我寫了一個簡單的程序,以瞭解如何JPopupMenu工作。但是我的代碼有些問題,它不能正確顯示彈出式菜單。請有人能告訴我原因嗎?JPopupMenu不工作

public class PopUpMenu extends JFrame implements ActionListener { 

JPanel panel; 
JPopupMenu popMenu; 
JMenuItem cut; 
JMenuItem copy; 

public PopUpMenu() { 

    setVisible(true); 
    setSize(300, 300); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 

    panel = new JPanel(); 
    popMenu = new JPopupMenu(); 
    cut = new JMenuItem(); 
    popMenu.add(cut); 
    copy = new JMenuItem(); 
    popMenu.add(copy); 

    add(panel); 
    panel.setComponentPopupMenu(popMenu); 

    addMouseListener(new MouseAdapter() { 
     public void mouseReleased(MouseEvent Me) { 
      if (Me.isPopupTrigger()) { 
       popMenu.show(Me.getComponent(), Me.getX(), Me.getY()); 
      } 
     } 
    }); 

} 

public void actionPerformed(ActionEvent arg0) { 

} 

public static void main(String[] args) { 

    Runnable r = new Runnable() { 
     public void run() { 
      PopUpMenu pop = new PopUpMenu(); 
     } 
    }; 
    SwingUtilities.invokeLater(r); 

} 

}

回答

4

你的代碼是臻完美(不需要鼠標偵聽器,面板應該被添加到JFrame的內容窗格),但它的作品。也許這似乎更好地工作,如果你給了一些文字到您的菜單項:

cut = new JMenuItem("Cut"); 
+0

非常感謝您的澄清:-) – 2011-03-09 08:58:43

1

MenuItem尺寸爲0這是我猜的原因。

因此,請爲您的MenuItem設置一些文字。

cut = new JMenuItem("Cut"); 
... 
copy = new JMenuItem("Copy"); 

HTH