JMenu 在 JPanel 中未激活

JMenu not active inside JPanel

我需要在 java swing gui 中创建一个带有多个复选框的组合框。我的第一个想法是创建一个带有自己的 CellRenderer 的自定义组合框,但后来我决定采用更多 "friendly" 解决方案,并使用 JMenu 和内部的 JCheckBox 项目。

问题是,当我创建菜单并将其放置在我的 JPanel 中时,菜单未处于活动状态并且在单击时不会打开。任何想法可能是这种行为的原因?甚至可以像这样使用 JMenu 吗?

这是我的代码示例:

JMenu menu;
panelCenter.add(new JLabel("Selection"));;
panelCenter.add(prepareSelection(menu));

private JMenu prepareSelection(JMenu menu) {
        menu = new JMenu("Select items");

        for (int i = 0; i < 10; i++) {
           JCheckBoxMenuItem item = new JCheckBoxMenuItem("item " + i);
           menu.add(item);
        }

        return menu;
    }

感谢您的帮助!

添加JMenuBar的地方不在JPanel中,而是在layeredPane中。您应该添加 JMenuBar,它将驻留在 layeredPane 的顶部。其余部分将由您的 contentPane 覆盖。 JMenuBar 启动后,您可以随时修改 JMenus 和 JMenuItems。

这是 Ivor Horton's Beginning 中的一张图片Java:

已解决。首先将 JMenuBar 添加到我的 JPanel,然后将 JMenus 添加到它。

menuBar = new JMenuBar();
prepareSelection(menuInput); // prepare menus
prepareSelection(menuOutput);
panelCenter.add(menuBar);