2012-11-03 4 views
29

자바 GUI를 배우고 있습니다. 창을 만드는 방법은 JFrame 클래스를 상속 받거나 확장하는 것이므로 JFrame에는 Window의 모든 속성이 포함되어 있으므로 사용하는 것이 좋습니다. 이제이 창에 뭔가를 추가하려면 add() 메서드를 사용해야합니다. 하지만 오늘 나는 을 발견했는데이 창도 창을 만들고 우리는 jpanelObjec.add()에 물건을 추가 할 수 있습니다.JPanel 대 Java의 JFrame

두 가지 방법의 차이점은 무엇입니까? 그들은 어떻게 든 관련이 있습니까?

+0

비슷한 질문 : http://stackoverflow.com/questions/3497889/difference-between-jpanel-jframe-jcomponent-and-japplet –

답변

56

당신은 불필요하게 JFrame 클래스를 확장하지 않아야

JFrame의 :

당신은 스윙 튜토리얼이 필요

JFrameComponentContainer입니다.

윈도우의 최소 요구 사항을 나타내는 데 사용되는 최상위 컨테이너입니다. (?/허용 극대화 할 최소화 할)이 windowClose 같은 다양한 Event들에 대한 Border의, 사이즈 변경, 타이틀 바, 컨트롤 (?를 JFrame 크기를 조정할 수있다), 및 이벤트 핸들러, windowOpened

JPanel의을 포함

JPanelComponent, ContainerJComponent

그것은 다른 Component 함께 s의 그룹에 사용되는 일반적인 클래스를 확장합니다. LayoutManager의 예를 들어, 작업 할 때

  • 유용하다 GridLayout f.i 다른 구성 요소를 JPanel에 추가 한 다음 JFrame에 추가하여 gui를 만듭니다. Layout 및 재사용 가능성 측면에서보다 관리가 용이합니다.

  • Swing에서 페인팅/그리기를 할 때 유용하지만 paintComponent(..)을 오버라이드 할 수 있으며 물론 이중 버퍼링이 가능합니다. 이 JPanel들 없이는 존재할 수 있지만

스윙은 GUI (JWindow, Window, JFrameFrame 또는 Applet)와 같은 최상위 컨테이너 없이는 존재할 수 없다.

+3

실제로 [JFrame] (http://docs.oracle.com/javase/) 7/docs/api/javax/swing/JFrame.html)은'JComponent'와'JContainer'를 확장하지 않습니다. – tenorsax

0

수퍼 클래스의보다 구체적인 클래스를 만들려면 클래스를 확장해야한다고 생각합니다.당신은 JFrame frame= new Frame(); 같은 프레임의 인스턴스를 만들 수 있고 그래서 frame.getContentPane.add(widget) 같은 개체를 추가 할 수 있습니다, 현재 프레임과 JPanel의

JFrame의 차이를 살펴 할 수있는 물건 a를 표현하기 위해 사용되는 몇 가지 일반적인 것들로 창문을 - 그것 창이 있어야합니다. 여기에는 테두리 (resizeable y/n?), 제목 표시 줄 (앱 이름 또는 기타 메시지), 컨트롤 (허용/최소화 최소화)/'윈도우 닫기'(아직 앱 종료를 허용 하시겠습니까?)와 같은 다양한 시스템 이벤트에 대한 이벤트 핸들러가 포함됩니다. JFrame은 일반적으로 경고창이나 알림창과 같은 독립 실행 형 응용 프로그램에 일반적으로 사용되는 창으로, 일반적으로 화면에 나타납니다. 창을 닫거나 열거 나 최대화하거나 최소화하거나 활성화 할 때마다 실행되는 Windows Listener 메서드를 사용합니다.

JPanel - JPanel은 실제로 범용 컨테이너 역할을합니다. 일반적으로 더 복잡한 작업이나 더 큰 작업을 처리하는 곳입니다. 하나의 패널 안에 여러 작업을 넣을 수 있습니다. JPanel는 JComponent의 서브 클래스이며, JComponent는 Container의 서브 클래스이므로, JPanel도 컨테이너입니다. JPanel에는 수퍼 클래스에서 상속받은 많은 메소드가 있습니다. 액세스 가능성, 정렬 및 이미지 관찰자는 몇 가지 예입니다. JPanel에서는 필드, 레이블, 버튼, 체크 상자, 심지어 이미지 및 기타 많은 기능을 넣을 수 있습니다. 단순히 비주얼과 컨트롤을 넣을 수있는 영역을 나타냅니다.

관련 문제