> Java > java지도 시간 > 여러 구성 요소를 추가했는데도 JFrame에 하나의 구성 요소만 표시되는 이유는 무엇입니까?

여러 구성 요소를 추가했는데도 JFrame에 하나의 구성 요소만 표시되는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-07 03:35:03
원래의
703명이 탐색했습니다.

Why is only one component showing up in my JFrame despite adding multiple components?

JFrame에는 하나의 구성 요소만 표시됩니다

이 질문은 사용자가 GUI의 최상위 구성 요소만 표시되는 문제에서 비롯되었습니다. 프로그램이 실행될 때 표시됩니다. 사용자의 코드는 프레임에 여러 패널과 텍스트 필드를 표시하려고 시도하지만 처음에는 하나의 구성 요소만 표시됩니다. 이러한 불일치로 인해 다른 요소가 가려지고 있다고 의심하게 됩니다.

솔루션

코드를 검토한 후 문제가 다음의 BorderLayout에 있다는 것이 분명해졌습니다. JFrame의 콘텐츠 창. BorderLayout은 모든 구성 요소가 처음 배치된 중앙 위치에 하나의 구성 요소만 차지하도록 허용합니다.

이 문제를 해결하려면 사용자는 BorderLayout에 추가할 때 각 구성 요소에 특정 제약 조건을 할당해야 합니다. 다음 코드 조각은 이 접근 방식을 보여줍니다.

f.add(top, BorderLayout.PAGE_START);
f.add(mid);
f.add(bot, BorderLayout.PAGE_END);
로그인 후 복사

이 코드는 상단 패널을 프레임 시작 부분에 배치하고 중간 및 하단 패널은 제한되지 않은 상태로 둡니다. 결과적으로 상단 패널 아래에 수직으로 표시됩니다.

추가 개선

가시성 문제 해결 외에도 사용자는 개선에 대한 욕구도 표명했습니다. 프로그램의 성능. 다음은 몇 가지 추가 제안 사항입니다.

  • Remove f.setSize(500, 500); setVisible(true) 직전에 pack()을 호출하여 내용에 따라 프레임 크기를 최적화합니다.
  • Change f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 보다 우아한 종료 전략을 위해.
  • 최상위 컨테이너에 추가되면 기본적으로 표시되므로 개별 구성 요소에 대한 setVisible(true) 호출을 생략하세요.
  • 불필요한 구문 public을 제거하세요. class EncDecExample은 JFrame을 확장하고 이를 공용 클래스 EncDecExample로 대체합니다.

이러한 변경 사항을 구현하면 프로그램은 모든 구성 요소를 의도한 대로 표시할 뿐만 아니라 사용자가 닫기를 누를 때 더 효율적이고 원활하게 닫힙니다. 버튼을 누르세요.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿