2010-12-18 4 views
8

JFrame은 여러 개의 창으로 구성되어 있습니다. 창은 무엇이며 왜 Jframe은 창으로 만들어 졌습니까? JPanel이있는 이유는 JFrame이 JPanel과 정확히 같지만 메뉴 막대와 닫기 버튼이있는 것 같아서 JPanel의 필요성은 무엇입니까? 아무도 나에게 3 가지 구성 요소의 정의와 사용법을 명확하게 설명 할 수 있습니까?스윙에서 프레임, 창 또는 패널의 용도는 무엇입니까?

답변

15

JFrame과 같은 최상위 컨테이너가 있습니다. 이것들은 GUI가 구축되는 메인 윈도우의 역할을 할 수 있습니다.

중간 수준의 컨테이너가 있습니다. 이들은 다른 용기에 넣어 져야하며, 그들은 스스로 존재할 수 없습니다. 구성 요소를 구성하거나 기능을 추가하는 데 도움이됩니다. JPanel은 다른 구성 요소를 구성하는 데 도움이되는 매우 간단한 컨테이너입니다. JSplitPane은 가변적 인 두 개의 창이있는 기능을 추가하는 반면

복잡한 GUI가있는 경우 JPanels를 사용하여 GUI의 다양한 영역을 구성한 다음 각 패널을 JFrame에 추가 할 수 있습니다.

Java에서 Swing API는 Composite Design Pattern을 사용합니다. 즉, 다른 오브젝트에서 매우 복잡한 오브젝트를 작성하고 단순 오브젝트와 동일한 방식으로 복합 오브젝트를 처리 할 수 ​​있습니다. 따라서 JPanel을 JPanel에 넣을 수 있으며 JPanel처럼 동작합니다.

태클 상자 (또는 재봉 키트)처럼 생각하십시오. 그것은 큰 컨테이너로 만들어진다. 그러나이 작은 컨테이너에 많은 작은 물건을 넣고 나중에 관리하기 어렵게 만드는 대신 작은 상자를 큰 상자 안에 넣을 수 있습니다. 그런 다음 구석과 싱커 등이 구획에 들어갑니다. 관리가 더 쉽습니다. 큰 상자는 JFrame이고 구획은 JPanels입니다.

+2

나는 그것을 얻는다. 그러나 나는 아직도 또 다른 질문을 가지고있다. 저의 책에는 JFrame이라는 그림이 여러 칸으로 구성되어 있습니다 : 루트 패널, 계층화 된 창, 내용 창 및 유리 창 모두에 대한 필요성은 무엇입니까? 패널은 == 패널입니다. – Ahmed

+2

프레임은 많은 상황을 처리해야하는 매우 복잡한 개체입니다. 그들은 여러 플랫폼이 비슷하게 행동해야한다고 말합니다. 이를 달성하기 위해서는 다양한 일들에 대한 책임을 그들 자신의 구성 요소로 나누는 것이 필요합니다. 이 페이지 : http://download.oracle.com/javase/7/docs/api/javax/swing/JRootPane.html 필자가 언급 한 창 중 일부의 목적을 이해하도록 도와줍니다. –

관련 문제