0

我有一个显示多个 JLables 的 JPanel,每个 JLables 代表一个二进制字符串的一个字符。(他们都是独立的,因为每个人都必须有一个 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,但由于某种原因,这忽略了 jLabels 的大小和间距,因此它们并不都适合它们应该放置的行。我还尝试将 FlowLayout 放在 Boxlayout 中。仍然没有工作。

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

我应该如何让它工作?

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

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

4

1 回答 1

1

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

最简单的方法是使用GridLayout

setLayout(new GridLayout());
label1.setHorizontalAlignment(JLabel.CENTER);
于 2013-04-14T01:26:38.357 回答