java - 使用 BoxLayout 垂直居中内容

标签 java swing jpanel layout-manager boxlayout

我试图将 JPanel 的内容与 BoxLayout 垂直居中。 BoxLayout 与 Y 轴对齐,因此内部的项目水平对齐。

例如,我现在拥有的:

-----------------------------
|          ------           |
|        ----------         |
|           ----            |
|      --------------       |
|                           |
|                           |
|                           |
|                           |
|                           |
|                           |
-----------------------------

我想要什么:

-----------------------------
|                           |
|                           |
|                           |
|          ------           |
|        ----------         |
|           ----            |
|      --------------       |
|                           |
|                           |
|                           |
-----------------------------

目前,我使用 setAlignmentX(Component.CENTER_ALIGNMENT) 将元素列居中:

JPanel box = new JPanel();
box.setLayout(new BoxLayout(box, BoxLayout.Y_AXIS));
JLabel one = new JLabel("First element");
one.setAlignmentX(JLabel.CENTER_ALIGNMENT);
box.add(one);
JLabel two = new JLabel("Second element");
two.setAlignmentX(JLabel.CENTER_ALIGNMENT);
box.add(two);
...

如何将其更改为垂直居中?

最佳答案

当有额外空间可用时,BoxLayout 布局允许组件增长(直至最大尺寸)。

您需要添加允许增长的组件。基本代码是:

box.add( Box.createVerticalGlue() );
box.add(...);
box.add( Box.createVerticalGlue() );

顶部/底部的两个“粘合”组件将增长以填充可用空间。

关于java - 使用 BoxLayout 垂直居中内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60422149/

相关文章:

Java Swing : Can't show several instances of my JPanel

java - 多个数据库操作出现 JVM 错误 : EXCEPTION_ACCESS_VIOLATION

java - NFS 共享文件访问问题

java - AntiSamy 可以防止 Java 中的 XSS?

java - 面向对象的二维图形方法 : delegating JPanel clicks to painted objects

java - 使用 JPanel 在 Java 中绘图

java - 如何使用 DurationFormatUtils 类获得所需格式的结果?

java SwingWorker 从 doInBackground() 启动 runnables 以及如何通知事件调度线程

java - 如何使用 swing 添加图像以及如何使其大小适合我的窗口?

java - 如何让 InputVerifier 与可编辑的 JComboBox 一起工作