티스토리 뷰

Swing에서 제공하는 컴포넌트들은 컴포넌트의 크기인 size와 실제 내용이 표시 되는 크기인 prerferredSize를 가지고 있습니다.

그 중에서도 JLabel과 같은 텍스트를 포함하는 컴포넌트는 아래의 그림과 같은 size와 prerferredSize를 가지고 있습니다.

주목할 점은 preferredSize인데 JLabel의 경우 폰트 크기에 따라 글자 전체 크기가 달라지므로 왼쪽 그림처럼 되죠.

따라서 이를 이용해 폰트를 키워나가면서 prerferredSize를 Size보다 작게 유지되는 때까지 최대한 폰트의 크기를 키우면 Size 크기에 꽉차는 폰트 크기로 자동적으로 만들 수 있습니다.

위 내용을 구현하는 방법은 여러가지일텐데 그 중 하나의 코드로 구현하면 이렇게 됩니다..

public class AutoLabel extends JLabel {
 
    public AutoLabel() {
        setHorizontalAlignment(SwingConstants.CENTER);
        setText("AutoLable");
        addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                resize();
            }
        });
    }
 
    void resize() {
        int i=0;
        while(true) {
            Font before = getFont();
            Font font = new Font(before.getName(), before.getStyle(), i);
            setFont(font);
            if(getPreferredSize().getWidth()>getWidth() || getPreferredSize().getHeight()>getHeight()) {
                font = new Font(before.getName(), before.getStyle(), i-1);
                setFont(font);
                break;
            }
            i++;    
        }
    }
 
}
cs

 

 

 

 

 

 

 

 

 

 

위 코드를 실행해서 크기를 변경해보면 아래처럼 동작합니다.

더보기

java, 자바, GUI, Swing, 글자 크기, 자동 조절

 

'Java > Swing' 카테고리의 다른 글

3 상태 체크박스 - Tri State CheckBox  (0) 2017.05.30
반투명 프레임 JFrame  (0) 2017.01.06
JFrame 화면 가운데 배치하기 (Java/Swing)  (1) 2016.09.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday