2011-03-09 3 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

귀하의 코드가 perfectible 인은 (마우스 수신기가 필요하지 않습니다, 그리고 패널은 JFrame의 내용 창에 추가해야합니다)하지만 작동합니다. 아마 당신이 당신의 메뉴 항목에 텍스트를 준 경우에 더 잘 작동하는 것 같다 :

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

감사 정화에 대한 많은 :-) –

1

귀하의 MenuItem 크기가 내가 생각하는 이유입니다 0이다.

그래서 MenuItem에 대한 텍스트를 설정하십시오.

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

HTH

관련 문제