2013-06-22 2 views
3

JFrame 크기를 조정할 때 Java에서 정확히 발생하는 상황에 대해 궁금합니다.JFrame 크기를 조정하면 어떻게됩니까?

JFrame의 bigCOntainer (JPanel 유형)에 구성 요소를 추가 할 때 발생하는 문제로 인해이 질문을하고 있습니다. 사용자가 특정 작업을 수행 할 때 뭔가 추가하고 싶지만 JFrame이 어떻게 든 조정될 때까지 구성 요소가 눈에 띄게 추가되지 않습니다.

새로운 구성 요소가 나타나게하려고 몇 가지 실험을하고있을 때 이것을 발견했습니다. myJFrame.pack()을 호출했습니다. 두 번째 질문으로 pack()이 무엇을하는지 알고 싶습니다. Java Documentation을 사용하면 모든 구성 요소의 크기를 원하는 크기로 조정할 수 있습니다. 내 솔루션에서 새로운 구성 요소를 표시하기 위해 구현에서 pack()을 사용하기로 결정한 경우 항상 기본 크기를 설정하는 것이 좋습니다. 누구든지 허용 된 프로그래밍 실습임을 증명할 수 있습니까? 확실히 좋은 생각 인 것 같습니다.

또한 새로운 구성 요소를 표시하기 위해 repaint()를 시도했지만 작동하지 않았습니다.

+0

* GUI가 표시된 후 왜 * 새 구성 요소를 추가하는 코드입니까? –

+0

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

+0

@AndrewThompson 내가 쓰고있는 프로그램은 경험을위한 것입니다. 그러나 사용자가 프로그램에서 진행중인 작업을 사용자에게 알리는 파일을로드 한 후 레이블을 추가하고 있습니다. – OKGimmeMoney

답변

4

revalidate()다음repaint()으로 런타임 중에 구성 요소를 추가하거나 제거하는 컨테이너에 호출해야합니다.

revalidate()은 컨테이너의 레이아웃 관리자에게 포함 된 구성 요소를 다시 레이아웃하라는 메시지를 표시하며 이는 사용자 코드에서 누락 된 것입니다. 이 요청이 없으면 레이아웃은 변경되지 않고 GUI 크기를 조정할 때까지 변경 사항을 볼 수 없으며 거의 ​​동일한 작업을 수행합니다. 당신은 시작에 GUI에 구성 요소를 추가하는 경우, 다음 솔루션은 모든 구성 요소가 추가 된 후 최상위 컨테이너에 pack()setVisible(true)를 호출하는 것입니다

참고.

구체적인 내용은 pack()이 무엇인지, 우리 모두가하는 일을하십시오. - 소스 코드를 읽으십시오.

관련 문제