>  기사  >  Java  >  내 JFrame에 최상위 구성 요소만 표시되는 이유는 무엇입니까?

내 JFrame에 최상위 구성 요소만 표시되는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-06 02:03:02464검색

Why is Only the Top Component Displayed in My JFrame?

JFrame에 상위 구성 요소만 표시: 문제 이해

Java의 GUI 프로그래밍에서 JFrame에 구성 요소를 추가할 때 이는 매우 중요합니다. 기본적으로 BorderLayout을 이해합니다. 제약 조건을 지정하지 않고 구성 요소를 추가하면 자동으로 BorderLayout의 CENTER 영역을 차지합니다. 그러나 이 중앙 영역은 단일 구성요소만 표시할 수 있습니다.

따라서 제공된 코드 조각에서 JPanel일 가능성이 높은 최상위 구성요소가 CENTER에 배치되어 다른 구성요소를 숨깁니다.

여러 구성 요소 표시를 위한 솔루션

이 문제를 해결하고 모든 구성 요소를 표시하려면 JFrame에 구성 요소를 추가할 때 적절한 제약 조건을 지정해야 합니다. BorderLayout은 NORTH, SOUTH, EAST, WEST 및 CENTER와 같은 다양한 제약 조건을 제공합니다.

즉각적인 효과를 얻으려면 다음 코드를 활용할 수 있습니다.

<code class="java">f.add(top, BorderLayout.PAGE_START);
f.add(mid);
f.add(bot, BorderLayout.PAGE_END);</code>

이러한 제약 조건을 설정하면 상단 패널은 상단 위치를 차지하고(PAGE_START), 중간 패널은 남은 공간을 채우고(제약 없음) 하단 패널은 하단에 배치됩니다(PAGE_END).

추가 권장 사항

제약 문제 해결 외에도 몇 가지 추가 최적화를 고려할 수 있습니다.

  1. pack() 메서드 사용: f를 제거합니다. setSize(500, 500); setVisible(true) 직전에 pack()을 호출합니다. 그러면 해당 구성 요소의 기본 크기에 따라 적절한 프레임 크기가 결정됩니다.
  2. GUI 종료 강화: Alter f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);로 변경됩니다. 이렇게 하면 전체 애플리케이션을 종료하는 대신 GUI 창을 화면에서 제거하여 적절하게 종료합니다.
  3. 불필요한 setVisible() 호출을 제거합니다. 구성 요소가 상단에 추가되면 표시됩니다. 레벨 컨테이너. 따라서 in.setVisible(true); 유사한 호출은 생략할 수 있습니다.
  4. 클래스 선언 구체화: 공용 클래스 EncDecExample 변경은 JFrame을 공용 클래스 EncDecExample로 확장합니다. 이는 프레임에 대한 참조를 유지하여 올바른 GUI 동작을 보장합니다.

위 내용은 내 JFrame에 최상위 구성 요소만 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.