[java] Java : 구성 요소에서 setPreferredSize () 및 setSize () 메서드의 차이점

사이의 주요 차이점은 무엇입니까 setSize()setPreferredSize(). 때때로 나는 setSize(), 때로는 setPreferredSize(), 때로는 하나는 내가 원하는 것을, 때로는 다른 하나를 사용했습니다.

JFrames와 JPanels에 어떤 호출을 사용해야 합니까?



답변

사용법은 구성 요소의 부모에 레이아웃 관리자가 있는지 여부에 따라 다릅니다.

  • setSize() -부모 레이아웃 관리자가 없을 때 사용합니다.
  • setPreferredSize()(또한 관련 setMinimumSizesetMaximumSize)-상위 레이아웃 관리자가있을 때 사용합니다.

setSize()메서드는 구성 요소의 부모가 레이아웃 관리자를 사용하는 경우 아무 작업도 수행하지 않을 것입니다. 이것이 일반적으로 영향을 미치는 위치는 최상위 구성 요소 ( JFrameJWindows) 및 스크롤 된 창 내부에있는 것입니다. setSize()레이아웃 관리자없이 부모 내부에 구성 요소가있는 경우 에도 호출해야합니다 .

일반적으로 setPreferredSize()레이아웃 관리자가있는 경우 예상대로 구성 요소를 레이아웃합니다. 대부분의 레이아웃 매니저가 선호를 받고 (물론 최소 및 최대)에 의해 작동 후 사용하여 구성 요소의 크기 setSize()setLocation()레이아웃의 규칙에 따라 해당 구성 요소를 배치 할 수 있습니다.

예를 들어, BorderLayout“북쪽”영역의 경계를 북쪽 구성 요소의 기본 크기와 같게 만들려고하면 JFrame, 다른 구성 요소 의 크기에 따라 그보다 더 크거나 작아 질 수 있습니다. 레이아웃, 등등.


답변

setSize()또는 setBounds()레이아웃 관리자가 사용되지 않을 때 사용할 수 있습니다.

당신이 레이아웃 매니저를 사용하는 경우, 당신은 사용하는 레이아웃 매니저에 대한 힌트를 제공 할 수 있습니다 setXXXSize()와 같은 방법 setPreferredSize()setMinimumSize()

그리고 컴포넌트의 컨테이너가 요청 된 크기를 준수하는 레이아웃 관리자를 사용하는지 확인하십시오. FlowLayout, GridBagLayoutSpringLayout관리자는 구성 요소의 적절한 사이즈 (제약 조건이 설정에 따라 후자의 두),하지만를 사용 BorderLayout하고 GridLayout, 당신이에 재 검증 메소드를 호출 할 필요가 일반적으로 보시죠 제발 애야 이러지 아직 표시의 구성 요소에 대한 새로운 크기 힌트를 지정 포함 계층 구조가 다시 배치되었는지 확인합니다. 그런 다음 repaint 메서드를 호출합니다.


답변

setSize 구성 요소의 크기를 지정된 크기로 조정합니다.

setPreferredSize선호하는 크기를 설정합니다. 구성 요소는 포함 된 컨테이너의 크기에 따라 또는 사용자가 구성 요소의 크기를 수동으로 조정 한 경우 실제로이 크기가 아닐 수 있습니다.


답변

IIRC …

setSize 구성 요소의 크기를 설정합니다.

setPreferredSize선호하는 크기를 설정합니다. Layoutmanager는 구성 요소에 대해 그 정도의 공간을 배치하려고합니다.

레이아웃 관리자를 사용하는지 여부에 따라 다릅니다.


답변