[Java swing] 자바 스윙 6 : 컴포넌트 위치 크기 지정 주의 사항

728x90

[Java swing] 자바 스윙 6 : 컴포넌트 위치 크기 지정 주의 사항

 

용어의 이해를 위해 다음 이미지를 참고하는 것이 좋다.

setLocation(x, y); 컴포넌트의 위치를 지정한다.(컴포넌트 왼쪽 위 좌표 기준) 0,0은 창 왼쪽 위 구석 위치이다.

setSize(w, h); 컴포넌트의 크기를 지정한다.(가로, 세로)

setBounds(x, y, w, h); 컴포넌트의 위치와 크기를 지정한다.(x축, y축, 가로, 세로)

setPrefferedsize(new Dimension(가로, 세로)); 컴포넌트의 최적 크기를 지정한다.

 

setPrefferedsize는 Layout이 적용된 컴포넌트의 크기를 지정하는데만 사용된다.

컴포넌트의 Layout이 지정되면 setSize로는 크기 지정이 불가능하다는 말이다.

반대로 Layout이 지정되지 않은 컴포넌트에 setPrefferedsize를 적용할 수 없다.

(BorderLayout을 지정하면 크기 조절이 불가능한 것 같다.)

 

컴포넌트의 위치와 크기를 자유롭게 하려면 setLayout(null);을 작성해야한다.

(Absolute Layout을 적용한 것과 같다.)

컨테이너의 레이아웃을 해제함으로 자유로운 위치 크기의 지정이 가능해진다.

대신 해당 컴포넌트의 위치와 크기는 setBounds로 적용해야 한다.

 

setLocation과 setPrefferedsize를 같이 쓰면 문제가 생기므로

setBounds로 위치 크기를 한번에 설정하던지

setLocation과 setSize를 같이 써야한다.

728x90