Reputation: 6696
Is it possible to create a JLabel
with a right-justified icon and text and the icon is on the right, like this:
I've seen this question, but is it really the best approach?
Upvotes: 7
Views: 4558
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.
Upvotes: 6
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):
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