将JLabel中的文本右对齐

时间:2012-09-25 19:06:17

标签: java jpanel jlabel text-alignment

我有一个JPanel,其中一些JLabel添加了JPanel的add()方法。我想将JLabel对齐到右边,如下图所示,但我不知道该怎么做。任何的想法?谢谢!

enter image description here

3 个答案:

答案 0 :(得分:76)

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

JLabel水平对齐

您可以使用JLabel constructor

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);

答案 1 :(得分:8)

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

答案 2 :(得分:0)

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

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);