【发布时间】:2023-12-24 05:49:01
【问题描述】:
我有一个 JPanel,它显示多个 JLable,每个 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,但由于某种原因,这会忽略 jLabels 的大小和间距,因此它们并不都适合它们所假设的行。我还尝试将 FlowLayout 放在 Boxlayout 中。还是不行。
请注意,在我上面的示例中,我有多个标签(我实际上有 31 个!!)
我应该如何让它工作?
编辑:更新了我复制错误代码的地方。 label1.setAlignmentX(Component.CENTER_ALIGNMENT)
编辑:jLabels 需要位于水平行中,而不是列中。
【问题讨论】:
-
第一个代码中
alignment的值是多少? -
如需尽快获得更好的帮助,请发帖SSCCE。
-
我建议使用单列
GridLayout,标签文本居中。 -
@TedHopp 哎呀,复制代码错误。它已更新。
-
我想我应该指定,jLabels 需要都在同一行。
标签: java swing jlabel layout-manager centering