摆动标签在 BoxLayout 中无法正确对齐



我有一个包含多个JLabelJPanel和一个JTextPane。我希望它们在彼此下方(这样就不会有两个标签在同一行(,并向左对齐。我试过几种方法:

  • BoxLayoutBoxLayout.Y_AXIS一起使用可以正确地将所有元素放在彼此下方。然而,虽然JTextPane正确地向左对齐,但JLabel保持居中,即使在调用几个方法尝试向左对齐时也是如此(请参阅下面的代码(
  • 使用GridLayout将正确地将元素放在彼此下方并向左对齐,但随后元素将垂直分布在JPanel上,文本行之间有巨大的空间。我希望所有元素都尽可能位于面板的顶部
private final void init() {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
add(new JLabel("a"));
final JLabel label = new JLabel();
final JTextPane pane = new JTextPane();
add(label);
add(pane);
// these three lines seem to be ignored
label.setHorizontalAlignment(SwingConstants.LEFT);
label.setAlignmentX(LEFT_ALIGNMENT);
label.setHorizontalTextPosition(SwingConstants.LEFT);

pane.setForeground(Color.RED);
pane.setEditable(false);
}

我该怎么做?

我希望它们位于彼此下方(因此同一行上没有两个标签(,并向左对齐。

您需要设置所有组件的对齐方式,甚至是JTextPane。

add(new JLabel("a"));

当您没有引用该标签时,您希望如何更改该标签的对齐方式?

final JLabel label = new JLabel();
final JTextPane pane = new JTextPane();
add(label);
add(pane);

您没有设置以上组件的对齐方式。

阅读Swing教程中关于修复对齐问题的部分

相关内容

  • 没有找到相关文章

最新更新