javajmenubar分布在窗口的整个宽度上

slmsl1lt  于 2021-06-26  发布在  Java
关注(0)|答案(2)|浏览(324)

我想创建一个非常简单的jmenubar,其中包含2个可单击的jmenuitems,代码如下:

JFrame window = new JFrame();
JMenuBar bar = new JMenuBar();
JMenuItem open = new JMenuItem("Open"), reload = new JMenuItem("Reload");
bar.add(open);
bar.add(reload);
window.setJMenuBar(bar);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);

然而,这两个项目之间有一个巨大的空间,我不知道这是从哪里来的:

我希望“重新加载”项就在“打开”项的旁边。
这是运行的代码的第一部分(后面紧接着有一个断点),因此其他任何东西都不能干扰它。
我有什么明显的缺失吗?

xytpbqjk

xytpbqjk1#

关键是我不想创建菜单,
嗯,菜单被设计成点击,然后显示一个带有菜单项的弹出窗口。
如果你想直接点击一个按钮,那么使用 JToolBar . 阅读swing教程中有关如何使用工具栏的部分,了解更多信息和工作示例。

i7uq4tfw

i7uq4tfw2#

你可能会混淆 JMenu 以及 JMenuItem . 我建议你看看这个文档教程,它将有助于理解不同对象之间的差异。
要做我理解的你想做的事情,你应该使用以下方法:

JFrame window = new JFrame();
    JMenuBar bar = new JMenuBar();
    JMenu open = new JMenu("Open"), reload = new JMenu("Reload");

    bar.add(open);
    bar.add(reload);
    ...

如果我崩溃了而你想创造一个 JMenu 有两个 JMenuItems 您可以轻松地执行以下操作:

JFrame window = new JFrame();
    JMenuBar bar = new JMenuBar();
    JMenu menu = new JMenu("A menu");    // creating a menu to hold the two items
    JMenuItem open = new JMenuItem("Open"), reload = new JMenuItem("Reload");

    menu.add(open);
    menu.add(reload);
    ...

相关问题