微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swing 标签在 BoxLayout 中无法正确对齐

如何解决Swing 标签在 BoxLayout 中无法正确对齐

我有一个 JPanel,其中包含多个 JLabel一个 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);

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

阅读来自 Fixing Alignment Problems 上的 Swing 教程的部分

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。