Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPOppMenu不工作_Java_User Interface_Swing - Fatal编程技术网

Java JPOppMenu不工作

Java JPOppMenu不工作,java,user-interface,swing,Java,User Interface,Swing,我编写了一个简单的程序来理解jpopmpmenu的工作原理。但我的代码有点问题,不能正确显示弹出菜单。有人能告诉我原因吗 public class PopUpMenu extends JFrame implements ActionListener { JPanel panel; JPopupMenu popMenu; JMenuItem cut; JMenuItem copy; public PopUpMenu() { setVisible(true); setSize(

我编写了一个简单的程序来理解
jpopmpmenu
的工作原理。但我的代码有点问题,不能正确显示弹出菜单。有人能告诉我原因吗

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);

}
}

您的代码是完美的(不需要鼠标侦听器,面板应该添加到JFrame的内容窗格中),但它可以工作。如果给菜单项添加一些文本,可能效果会更好:

cut = new JMenuItem("Cut");
您的代码是完美的(不需要鼠标侦听器,面板应该添加到JFrame的内容窗格),但它可以工作。如果给菜单项添加一些文本,可能效果会更好:

cut = new JMenuItem("Cut");

您的
MenuItem
大小是
0
,这就是我猜的原因

因此,为
菜单项设置一些文本

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

HTH

您的
MenuItem
大小是
0
,这就是我猜的原因

因此,为
菜单项设置一些文本

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

HTH

非常感谢您的澄清:-)非常感谢您的澄清:-)