我有一个包含多个JLabel
的JPanel
和一个JTextPane
。我希望它们在彼此下方(这样就不会有两个标签在同一行(,并向左对齐。我试过几种方法:
- 将
BoxLayout
与BoxLayout.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教程中关于修复对齐问题的部分