将 JLabel 中的文本向右对齐

问题描述 投票:0回答:4

我有一个 JPanel,其中使用 JPanel 的

add()
方法添加了一些 JLabel。我想将 JLabel 向右对齐,如下图所示,但我不知道该怎么做。有什么想法吗?谢谢!

enter image description here

java jpanel jlabel text-alignment
4个回答
94
投票

这可以通过两种方式完成。

JLabel 水平对齐

您可以使用

JLabel
构造函数:

JLabel(String text, int horizontalAlignment) 

向右对齐:

JLabel label = new JLabel("Telephone", SwingConstants.RIGHT);

JLabel
还有
setHorizontalAlignment
:

label.setHorizontalAlignment(SwingConstants.RIGHT);

这假设组件占据容器中的整个宽度。

使用布局

另一种方法是使用布局将组件实际对齐到右侧,同时确保它们不会占据整个宽度。 这是一个带有

BoxLayout
的示例:

    Box box = Box.createVerticalBox();
    JLabel label1 = new JLabel("test1, the beginning");
    label1.setAlignmentX(Component.RIGHT_ALIGNMENT);
    box.add(label1);

    JLabel label2 = new JLabel("test2, some more");
    label2.setAlignmentX(Component.RIGHT_ALIGNMENT);
    box.add(label2);

    JLabel label3 = new JLabel("test3");
    label3.setAlignmentX(Component.RIGHT_ALIGNMENT);
    box.add(label3);


    add(box);

10
投票
JLabel label = new JLabel("fax", SwingConstants.RIGHT);

1
投票

对我来说, 似乎您的实际意图是在不同的行上放置不同的单词。 但让我回答你的第一个问题:

JLabel lab=new JLabel("text");
lab.setHorizontalAlignment(SwingConstants.LEFT);     

如果您有图像:

JLabel lab=new Jlabel("text");
lab.setIcon(new ImageIcon("path//img.png"));
lab.setHorizontalTextPosition(SwingConstants.LEFT);

但是,我相信您希望使标签在 1 行上只有 2 个单词。

在这种情况下试试这个:

String urText="<html>You can<br>use basic HTML<br>in Swing<br> components," 
   +"Hope<br> I helped!";
JLabel lac=new JLabel(urText);
lac.setAlignmentX(Component.RIGHT_ALIGNMENT);

0
投票

使用 HTML 和 CSS 非常简单

示例:

JLabel lb2 = new JLabel("<html><body style='text-align:right;'>with<br>linebreak</body></html>");
© www.soinside.com 2019 - 2024. All rights reserved.