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

标签 java swing jpanel

所以我的代码如下:

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

关于java - JSeparator 不在我的 JPanel 中的正确位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460780/

相关文章:

java - 将 JTextField 添加到 JPanel 并显示它们

java - JFrame : Getting actual content size

java - 如何在 swt 中从父组合中删除子组合?

java - 在 Android 上格式化数字时出现 NoSuchElementException,但在 Java SE 上没有

java - 无法在字符串中的所有空格之前替换或插入\

java - 从 JButton 中删除三个点 "..."?

java - JPanel 某些区域的 BalloonTip

Java:发送POSTcurl命令在slack中发送消息

java - 按钮不创建 JPanel

java - 在另一个组件中绘制外部组件(即属于不同框架的内容 Pane )