JPopupMenu无法正常工作

时间:2011-03-09 08:44:18

标签: java user-interface swing

我写了一个简单的程序来了解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);

}

}

2 个答案:

答案 0 :(得分:4)

您的代码是完整的(不需要鼠标侦听器,面板应该添加到JFrame的内容窗格中),但它可以正常工作。如果您在菜单项中添加了一些文字,它似乎会更好用:

cut = new JMenuItem("Cut");

答案 1 :(得分:1)

我的MenuItem尺寸为0,这就是我猜的原因。

因此,请为MenuItem设置一些文字。

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

HTH