Edward Ruchevits
Edward Ruchevits

Reputation: 6696

JLabel Right-Justified Icon and Text

Is it possible to create a JLabel with a right-justified icon and text and the icon is on the right, like this:

enter image description here

I've seen this question, but is it really the best approach?

Upvotes: 7

Views: 4558

Answers (2)

trashgod
trashgod

Reputation: 205825

The example cited uses layout and label properties for right/left justification.

Additionally, consider implementing the Icon interface in a JList renderer, where setHorizontalAlignment() and setVerticalAlignment() may be used to control the relative geometry. This related TableCellRenderer illustrates the principle.

image

Upvotes: 6

Nick Rippe
Nick Rippe

Reputation: 6475

Perhaps this would be more what you're looking for? It should align everything on the right side of the panel (more so than the example you were looking at):

Screenshot of Code

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

Upvotes: 9

Related Questions