2015-02-15 7 views
1
import java.awt.FlowLayout; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import javax.swing.JFrame; 
import javax.swing.JMenuItem; 
import javax.swing.JPopupMenu; 

public class B extends MouseAdapter { 
    JFrame frame = new JFrame(); 
    JPopupMenu popup = new JPopupMenu(); 
    JMenuItem item1 = new JMenuItem("ADD"); 
    JMenuItem item2 = new JMenuItem("DELETE"); 

    public static void main(String arg[]) { 
     new B(); 
    } 

    B() { 
     frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
     frame.setLayout(new FlowLayout()); 
     frame.addMouseListener(this); 
     popup.add(item1); 
     popup.add(item2); 
     frame.add(popup); 
     frame.setVisible(true); 
    } 

    public void mouseClicked(MouseEvent click) { 
     if(click.isPopupTrigger()) 
      popup.show(frame,click.getX(),click.getY()); 
    } 

} 

Я написал этот код Java, чтобы отобразить всплывающее меню с двумя пунктами на нем, но всплывающее меню не отображается, когда я правой кнопкой мыши на рамке, пожалуйста, помогите.JPopupMenu не отображается на правой кнопкой мыши

+0

Вы пробовали открывать на JPanel вместо JFrame меню? Насколько я помню, я видел только JPopupMenus, открытый на JPanel ... –

ответ

3

От Java Doc: isPopupTrigger()

Всплывающие меню запускаются по-разному в разных системах. Поэтому isPopupTrigger следует проверять как в mousePressed, так и в mouseReleased для правильной межплатформенной функциональности.

Вместо mouseClicked() добавьте ниже двух методов:

public void mousePressed(MouseEvent e) { 
     if(e.isPopupTrigger()) 
      popup.show(frame,e.getX(),e.getY()); 
    } 

    public void mouseReleased(MouseEvent e) { 
     if(e.isPopupTrigger()) 
      popup.show(frame,e.getX(),e.getY()); 
    }