繁体   English   中英

将一个JPanel中的多个JLabel居中

[英]Centering multiple JLabels in a JPanel

我有一个JPanel,它显示多个JLable,每个JLable代表一个二进制字符串的字符。 (它们都是独立的,因为每个必须具有一个MouseListener,但这不是我的问题的一部分)

我的问题是我似乎无法将JLable居中。

我努力了

this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
add(label1);   //= left aligned
label1.setAlignmentX(Component.CENTER_ALIGNMENT);  //= still left aligned

this.setLayout(new BorderLayout());
add(label1, BorderLayout.CENTER);  //= only 1 showed up

我也将其保留为默认的FlowLayout,但是由于某种原因,它忽略了jLabel的大小并将其间隔开,因此它们并不完全适合它们所假定的行。 我还尝试过将FlowLayout放在Boxlayout中。 还是没用。

请注意,在上面的示例中,我有多个标签(我实际上有31个!)

我该如何工作?

编辑:更新了我复制错误代码的位置。 label1.setAlignmentX(Component.CENTER_ALIGNMENT)

编辑:jLabel需要在水平行中,而不是列中。

BoxLayout的布局必须沿Y_AXIS排列,以使任何中心对齐都能正常工作。 对于BorderLayout ,虽然可以水平放置3个组件( WESTCENTEREAST ),但它们并不是均匀分布的。 同样,虽然FlowLayout允许组件居中对齐,但它们不会均匀分布。

最简单的方法是使用GridLayout

setLayout(new GridLayout());
label1.setHorizontalAlignment(JLabel.CENTER);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM