所以我的代码如下:
JPanel mainPanel = new JPanel();
mainPanel.setBorder(new EmptyBorder(50,50,0,10));
BoxLayout layout = new BoxLayout(mainPanel, BoxLayout.Y_AXIS);
mainPanel.setLayout(layout);
JSeparator separate = new JSeparator(SwingConstants.HORIZONTAL);
mainPanel.add(separate);
mainPanel.add(new JButton());
mainPanel.add(new JButton());
我一直存在的问题是,而不是我的小组看起来像:
______________
| |
| ------ |
| Button |
| Button |
| |
| |
| |
______________
它出于某种原因在按钮和分隔符之间放置了大量空间,因此它看起来像:
______________
| |
| ------ |
| |
| |
| |
| Button |
| Button |
______________
对于我的生活,我无法将按钮放在JSeparator的旁边,有什么想法吗?
答案 0 :(得分:4)
BoxLayout尊重组件的最大大小。当有更多可用空间时,组件将增长以占用额外空间。您需要阻止分隔符增长:
JSeparator separate = new JSeparator(SwingConstants.HORIZONTAL);
System.out.println(separate.getPreferredSize());
System.out.println(separate.getMaximumSize());
Dimension d = separate.getPreferredSize();
d.width = separate.getMaximumSize().width;
separate.setMaximumSize( d );
答案 1 :(得分:0)
如果Y对齐(来自.getAlignmentY())不一样,BoxLayout往往会做一些时髦的事情。尝试手动将对齐设置为顶部。 (BoxLayout中的X对齐也会发生同样的事情。)