看一下这张图片:
正如您所看到的,我在“自动刷新”JCheckBox和我的“显示列”菜单之间有一个JSeparator,我的“显示列”菜单希望尽可能地正确。为什么它不能像JSeparator之前的其他所有东西一样左右对齐?我似乎无法做到这一点,这是我目前的代码:
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);
答案 0 :(得分:2)
此tutorial可能会有所帮助。引用:
默认情况下,大多数组件都具有中心X和Y对齐。但是,按钮,组合框,标签和菜单项具有不同的默认X对齐值:LEFT_ALIGNMENT。
因此,您可以看到放置逻辑不同,换句话说,不要依赖它。但是,我不知道为什么你手动对齐左边不起作用。最有可能的问题是你上一个菜单的大小。您可以使用glue as filler,因为JMenuBar
有一个BoxLayout
。
menuBar.add(showMenu);
menuBar.add(Box.createHorizontalGlue());
这个不可见的空间将添加到菜单的末尾,它会将组件推到左边。
答案 1 :(得分:0)
问题是JSeparator的大小,它想占用尽可能多的水平空间。所以,我的解决方案是限制它的大小,使它最多只能是一个像素宽:
JSeparator menuSep = new JSeparator(javax.swing.SwingConstants.VERTICAL);
menuSep.setMaximumSize(new java.awt.Dimension(1, 1000));
menuBar.add(menuSep);