【问题标题】:Unable to vertically align JLabel with JCheckBox as if single JCheckBox with GroupLayout无法将 JLabel 与 JCheckBox 垂直对齐,就好像单个 JCheckBox 与 GroupLayout
【发布时间】:2012-08-28 09:12:50
【问题描述】:

有时我需要复选框的标签位于复选框的左侧而不是右侧,而不是使用

JCheckBox checkbox = new JCheckBox("label",false);

我愿意:

JCheckBox checkbox = new JCheckBox("",false);
JLabel    label    = new JLabel("label");
GroupLayout.ParallelGroup vp1 = layout.createBaselineGroup(false, false);
vp1.addComponent(checkbox);
vp1.addComponent(label);

(我正在使用 GroupLayout) 但它们没有正确垂直对齐,我也尝试过

 =layout.createParallelGroup(GroupLayout.Alignment.CENTER);

看起来不错,但与使用单个复选框仍然不同 以及其他各种选项,是否有可能获得相同的对齐方式?

【问题讨论】:

  • 为什么不使用setHorizontalTextPosition
  • 我同意@MadProgrammmer,这是setHorizo​​ntalTextPosition 的责任
  • 我的 2cents 可能不是一个选项 - 如果你有一点机会:去外部 LayoutManager
  • @MadProgrammer,辉煌没有意识到这种方法存在,是的,这就是我应该并且将使用的。虽然仍然(有点)感兴趣,如果这可以用我不正确的方法来完成。
  • @PaulTaylor 我会听从 kleopatra 的建议。是的,它可以做到。我会将标签和复选框放在自己的窗格中并使用GridBagLayout之类的东西,但在这种情况下这可能会过度杀戮,FlowLayout 也会起作用

标签: java swing jlabel jcheckbox grouplayout


【解决方案1】:

您可以使用函数 setHorizontalTextPosition(int textPosition) 和 int 值 SwingConstants.RIGHT

【讨论】:

  • 如果您有一个复选框,则发现问题,然后在下面有类似 Jlabel(用于输入字段)之类的其他内容,并且您将 alignnment 设置为 LEFT,然后复选框的文本开头未对齐加上 JLabel 的文本。使用带有右侧标签的默认复选框,该复选框也没有对齐(略微缩进)但看起来不错,但是当它是未与文本对齐的文本时看起来很有趣。
猜你喜欢
  • 1970-01-01
  • 2014-04-03
  • 2019-05-22
  • 2020-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
相关资源
最近更新 更多