首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMenuBar内部的组件想要在JSeparator之后对齐吗?

JMenuBar内部的组件想要在JSeparator之后对齐吗?
EN

Stack Overflow用户
提问于 2015-08-10 19:39:53
回答 2查看 420关注 0票数 1

看一看这张图片:

如您所见,我的“自动刷新”JCheckBox和"Show“菜单之间有一个JCheckBox,而我的"Show”菜单希望尽可能地向右显示。为什么它不像JSeparator之前的所有东西一样,向左调整呢?我似乎无法做到这一点,以下是我当前的代码:

代码语言:javascript
复制
JCheckBox pulling = new JCheckBox("Auto Refreshing");
...
menuBar.add(pulling);

menuBar.add(new javax.swing.JSeparator(javax.swing.SwingConstants.VERTICAL));

JMenu showMenu = new JMenu("Show Column");
showMenu.setAlignmentX(Component.LEFT_ALIGNMENT);
menuBar.add(showMenu);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-12 22:03:25

问题是JSeparator的大小,它想占据尽可能多的水平空间。所以,我的解决方案是限制它的大小,这样它只能有一个像素宽的最大值:

代码语言:javascript
复制
JSeparator menuSep = new JSeparator(javax.swing.SwingConstants.VERTICAL);
menuSep.setMaximumSize(new java.awt.Dimension(1, 1000));
menuBar.add(menuSep);
票数 0
EN

Stack Overflow用户

发布于 2015-08-11 05:59:30

这个教程可能会有帮助。引用如下:

默认情况下,大多数组件具有中心X和Y对齐。但是,按钮、组合框、标签和菜单项具有不同的默认X对齐值: LEFT_ALIGNMENT。

所以你可以看到,布局逻辑是不同的,换句话说,不要指望它。然而,我不知道为什么您的手动对齐左没有工作。最有可能的问题是你上一个菜单的大小。您可以做的是使用胶作填料,因为JMenuBar有一个BoxLayout

代码语言:javascript
复制
menuBar.add(showMenu);
menuBar.add(Box.createHorizontalGlue());

这个不可见的空间将被添加到菜单的末尾,并将组件推到左边。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31927758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档