在JPanel中居中多个JLabel

时间:2013-04-14 01:11:06

标签: java swing jlabel layout-manager centering

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

我的问题是我似乎无法集中JLables。

我试过了

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需要在水平行而不是列。

1 个答案:

答案 0 :(得分:1)

BoxLayout的布局需要沿着Y_AXIS才能使任何中心对齐工作。对于BorderLayout,虽然3个组件可以水平放置(WESTCENTEREAST),但它们不会均匀分布。同样,FlowLayout虽然允许组件居中对齐,但不会均匀分布它们。

最简单的方法是使用GridLayout

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