Java에서 setSize()와 setPreferredSize()의 차이점

 의 차이점 setSize()setPreferredSize()은 약간 복잡합니다. 때때로 우리는 setSize()  그리고 때때로  setPreferredSize()입니다. 때로는 하나가 우리의 필요를 충족시키고 다른 하나는 그렇지 않습니다. 이 두 방법의 주요 차이점은 무엇입니까? JFrame 과 JPanel에 어느 것을 사용해야합니까?

대답은 구성 요소에 부모가없는 경우 setSize() 구성 요소의 크기를 변경하고, 그렇지 않으면   setPreferredSize() 및 두 메서드 모두 setMinimumSize()setMaximumSize()입니다. setPreferredSize() 구성 요소에 적합한 크기를 선택하면 layoutmanager는 구성 요소에 적합한 공간을 정렬하려고 시도합니다.

setSize()  상위 구성 요소가 레이아웃 관리자를 사용하는 경우 아무 작업도 수행하지 않습니다. setSize()  효과가 있다  JFrame 및 JWindow와 같은 최상위 구성 요소에있을 것입니다. 다음 번호로 전화해야 합니다. setSize()  레이아웃 관리자가없는 상위 내부에 구성 요소가있는 경우.

So,  setPreferredSize()  레이아웃 관리자가 있는 경우 대부분이   구성 요소의 최적, 최소 및 최대 크기를 복구합니다. 쓰다 setSize()  그리고  setLocation을 사용하여 선택한 레이아웃의 매개변수에 따라 이러한 구성 요소를 배치할 수 있습니다.

Example:

A BorderLayout은 북부 지역의 경계를  에 지정된 차원과 동일하게 설정하려고 시도합니다. setPreferredSize()  북부 지역의. JFrame의 크기와 크기에 따라 그보다 더 커질 수 있습니다. 레이아웃에 따른 다른 구성 요소의 크기.

결론:
  • setPreferredSize()  레이아웃이 있는 경우 구성 요소의 최적 위치와 치수를 계산합니다.
  • 레이아웃이 없는 경우 setSize()  사용됩니다.