Skip to main content
 首页 » 编程设计

java之JSeparator 不在我的 JPanel 中的正确位置

2024年02月27日54softidea

所以我的代码如下:

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 旁边,有什么想法吗?

请您参考如下方法:

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 );