如何解决Swing 标签在 BoxLayout 中无法正确对齐
我有一个 JPanel
,其中包含多个 JLabel
和一个 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);
您没有设置上述组件的对齐方式。
阅读来自 Fixing Alignment Problems 上的 Swing 教程的部分
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。