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?
This can be done in two ways. To align to the right: JLabel label = new JLabel("Telephone", SwingConstants. RIGHT);
Surround the string with <html></html> and break the lines with <br/> . just a little correction: use <br /> instead of just <br> ... this is recommended way of doing it (to not miss any closing tags)...
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;
}
}
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With