【问题标题】:How do I place two JMenuItems adjacent to each other?如何将两个 JMenuItem 彼此相邻放置?
【发布时间】:2015-07-27 03:49:38
【问题描述】:

我的代码:

JMenuBar bar = new JMenuBar();
JMenu menu = new JMenu("Edit circle");
JMenuItem help = new JMenuItem("Help");
JMenuItem exit = new JMenuItem("Exit");

bar.add(menu);
bar.add(help);
bar.add(exit);

JMenuBar 的输出:

我希望输出是这样的:

我需要做什么才能获得预期的输出?

【问题讨论】:

  • 如果是我 - 我会把 Help 然后是菜单分隔符,然后将 Exit 放在 Application (或类似的)JMenu 中,并将其添加到 @ 的左侧987654330@ menu.. 我看不出将菜单项直接添加到 JMenuBar 会很好,正如您的实验所建议的那样。
  • Help 和Exit 不是JMenus,它们应该被添加到JMenu 并且应该被添加到JMenuBar
  • @MadProgrammer ,所以,将JMenuItem 添加到JMenuBar 行不通?但我现在有this problem。
  • @AndrewThompson,好的。好主意。如果我找不到任何其他方法来解决我的问题,我会继续这样做。
  • @CoolGuy 哦,它可以工作,但正如你所说,它不能按照你想要的方式工作

标签: java swing jmenuitem jmenubar


【解决方案1】:

您不能在JMenuBar 中添加JMenuItem。 所以试试这个..它会工作..

    JMenuBar bar = new JMenuBar();
    JMenu menu1 = new JMenu("Edit circle");
    JMenu help = new JMenu("Help");
    JMenu exit = new JMenu("Exit");
    bar.add(menu1);
    bar.add(help);
    bar.add(exit);
    exit.addMenuListener(new MenuListener() {

        @Override
        public void menuSelected(MenuEvent e) {
            System.out.println("Exiting");
        }

        @Override
        public void menuDeselected(MenuEvent e) {
        }

        @Override
        public void menuCanceled(MenuEvent e) {
        }
    });

您不能将ActionListener 添加到 JMenu。使用MenuListener..

来自this的引用...

【讨论】:

  • 这产生了预期的输出,但现在,按下 help 和 exit 没有任何作用。我已经为他们添加了ActionListeners。 :(
  • ActinoListener 不适用于JMenu.. 因为你必须使用JMenuItem 或者你可以将MenuListener 添加到exit 菜单...检查代码...
  • 我最终使用了mouseListener。无论如何感谢您的帮助。
猜你喜欢
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
  • 2016-02-16
  • 1970-01-01
  • 2011-11-04
相关资源
最近更新 更多