我有一个显示多个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需要在水平行而不是列。
答案 0 :(得分:1)
BoxLayout
的布局需要沿着Y_AXIS
才能使任何中心对齐工作。对于BorderLayout
,虽然3个组件可以水平放置(WEST
,CENTER
,EAST
),但它们不会均匀分布。同样,FlowLayout
虽然允许组件居中对齐,但不会均匀分布它们。
最简单的方法是使用GridLayout
:
setLayout(new GridLayout());
label1.setHorizontalAlignment(JLabel.CENTER);