JLabel 右对齐图标和文本

7

是否有可能创建一个右对齐的JLabel,其中图标和文本都在右侧,就像这样:

enter image description here

我看到了这个问题,但它真的是最好的方法吗?


另外考虑使用 JListJTable 渲染器 - trashgod
3
这里有一个相关的例子,可以供您尝试。 - trashgod
2
这个答案是由Java Swing中的最佳之一提供的 :-) 你说出名字,这个人就会从魔法盒子里给你一个例子。 - nIcE cOw
1
@GagandeepBali:你太好了。这个相关的示例演示了在渲染器中使用Icon - trashgod
3
找到了另一个好的"trashgod"示例:https://dev59.com/v3A85IYBdhLWcg3wHvzB - David Kroukamp
2个回答

9
也许这更符合您的要求?它应该将面板右侧的所有内容对齐(比您查看的示例更加明显):

代码截图

import java.awt.*;
import javax.swing.*;

public class TempProject
{
    public static void main(String args[])
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                Box mainContent = Box.createVerticalBox();
                mainContent.add(TempProject.getLabel("abc"));
                mainContent.add(TempProject.getLabel("Longer"));
                mainContent.add(TempProject.getLabel("Longerest"));
                mainContent.add(TempProject.getLabel("Smaller"));

                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                frame.setContentPane(mainContent);    
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public static JLabel getLabel(String text){
        JLabel c = new JLabel(text);
        c.setHorizontalTextPosition(SwingConstants.LEADING);
        c.setAlignmentX(SwingConstants.RIGHT);
        c.setIcon(UIManager.getIcon("FileChooser.detailsViewIcon"));
        return c;
    }
}

6

引用的示例使用布局和标签属性进行右/左对齐。

另外,考虑在JList渲染器中实现Icon接口,其中setHorizontalAlignment()setVerticalAlignment()可用于控制相对几何形状。这个相关的TableCellRenderer说明了原理。

image


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接