如果我在上面添加JPanel并将其悬停,JPopupMenu将隐藏

时间:2019-05-24 17:35:56

标签: java swing awt jpopupmenu

我正在为我的程序创建一个工具箱,该工具箱是一个弹出窗口,在右键单击时可见。当失去焦点时,它也会隐藏,但这是我的问题。当我在JPopupMenu上添加一个JPanel并将其悬停时,它立即关闭。我认为这与失去焦点有关,但我不确定。我该如何解决?

这是我的代码:

public class ToolBox extends JPopupMenu implements MouseListener {
    private Component parent;

    public ToolBox(Component parent) {
        this.parent = parent;

        Box box = Box.createVerticalBox();
        String[] list = {"kopieren", "ausschneiden", "einfuegen"};
        for(int i = 0; i < list.length; i++) {
            JMenuItem item = new JMenuItem(list[i]);
            box.add(item);
        }
        add(box);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setSize(1000, 700);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        frame.add(panel);
        ToolBox box = new ToolBox(panel);
        panel.addMouseListener(box);
        frame.setVisible(true);
    }
    @Override
    public void mouseReleased(MouseEvent e) {
        if (e.isPopupTrigger()) {
            show(parent, e.getX(), e.getY());
        }
    }

    @Override
    public void mouseClicked(MouseEvent e) {
    }

    @Override
    public void mousePressed(MouseEvent e) {
    }

    @Override
    public void mouseEntered(MouseEvent e) {}

    @Override
    public void mouseExited(MouseEvent e) {}

}

编辑:

我发现布局不是问题。问题出在专家组。因此,如果不创建bug,就无法将JPanel添加到JPopupMenu。有人知道该如何解决吗?

0 个答案:

没有答案