https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040201&docId=64170900&sp=1&sort=default&sid=M9nBvL7bdFnh48cqjI6RiA%3D%3D&rank=2&pid=TwDP%2FdpVuE4ssv%2FvQTssssssttN-044333&search_sort=0&qb=c2V0UHJlZmVycmVkU2l6ZQ%3D%3D§ion=kin&spq=0&enc=utf8
자바 GUI 에서 사이즈 조절할때
setSize 와 setPreferredSize 사용하는데
jTextAreaStatus.setSize(new java.awt.Dimension(570, 20));
jTextAreaStatus.setPreferredSize(new java.awt.Dimension(300, 150));
의 차이점을 알려주세요!!
Dimension(x,y) 는 폭과 너비설정하는 메소드인줄 알겠는데 화면에 나오는 컴포넌트의 시작위치 지정은 어떻게 하는지 모르겠어요.
layout 매니저는 borderlayout 사용했구요.
제가 듣기로는 layout 매니저에 따라 사이즈 조절 메소드가 다르다고 들었거든요.
===========================
setSize()는 컴포넌트의 크기를 결정하는 메소드는 맞습니다.
하지만 질문자가 얘기했듯이 Layout에 따라 setSize()를 사용할 수도
못할 수도 있습니다.
그건 교재를 참고하시구요..
setPreferredSize(); 이 메소드는 Dimension객체를 인자로 받으면서
해당 콤포넌트의 기본크기를 결정해 줍니다.
이것또한 BorderLayout을 쓰고 있다면 영향을 줄 수 없구요..
버튼이 두개 있는데 하나의 버튼은 그냥 생성해보시고
다른 하나의 버튼은 생성한 다음 setPreferredSize()를 적용해 크기를
잡아주면 두개의 버튼이 다른 크기로 보이실겁니다..
단, FlowLayout으로 설정하고 한번 테스트 해보세요..
setSize()와의 차이점은
역시 FlowLayout으로 봤을때 발견하실수 있는데요..
FlowLayout에서도 setSize()로 컴포넌트 크기를 결정할 수 없는데
이 setPreferredSize()는 FlowLayout에서도 컴포넌트의 크기를 조정할 수 있습니다.
이는 setSize()와 다르게 컴포넌트의 기본크기를 바꾸기 때문입니다.
컴포넌트를 이리저리, 이크기 저크기로 자유롭게 하고싶다면
레이아웃을 안주는 방법이 있습니다..
setLayout(null); 이렇게 설정하면 컨테이너의 레이아웃을 해제하는데요
그러면 그위에 올려지는 콤포넌트들은 모두
setBounds();를 적용해줘야 합니다.
예를 들어 50,100위치에 300,200크기로 하고싶다면
setBounds(50,100,300,200);
이런식으로요..