아이콘이있는 JLabel의 경우 setHorizontalTextPosition(SwingConstants.LEADING)
이면 레이블의 넓이에 관계없이 텍스트 바로 뒤에 아이콘이 그려집니다.JLabel의 아이콘을 오른쪽 정렬하는 방법은 무엇입니까?
각 항목의 텍스트 길이에 따라 아이콘이 모든 장소에 표시되므로 특히 목록에 좋지 않습니다.
코드를 추적 한 결과 SwingUtilities#layoutCompoundLabelImpl
에 텍스트 너비는 SwingUtilities2.stringWidth(c, fm, text)
으로 설정되고 아이콘 x는 레이블 너비를 고려하지 않고 텍스트를 따르도록 설정되어있는 것으로 보입니다.
import java.awt.*;
import javax.swing.*;
public class TestJLabelIcon
{
public static void main(String args[])
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JLabel c = new JLabel("abc");
c.setHorizontalTextPosition(SwingConstants.LEADING);
c.setHorizontalAlignment(SwingConstants.LEADING);
c.setIcon(UIManager.getIcon("FileChooser.detailsViewIcon"));
c.setBorder(BorderFactory.createLineBorder(Color.RED));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(c);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
당신은 그 라벨이 항상 프레임을 채 웁니다 아이콘이 머물러 볼 수 있습니다 여기에
은 간단한 경우입니다. 두 인수를 TRAILING
으로 설정하면 미러 문제가 발생합니다.
UI를 재정의하거나 JPanel 등을 사용할 수 있음을 알고 있습니다. JLabel에서 간단한 것을 놓치고 있는지 궁금합니다. 그렇지 않으면 Java 버그처럼 보입니다.
FYI Windows XP의 경우 jdk1.6.0_06입니다.
Nop는, 나는 텍스트가 왼쪽 정렬이 오른쪽 정렬 아이콘을해야합니다. –
아, 무슨 뜻인지 알 겠어. – trashgod