2010-08-16 10 views
39

재미있는 물리 시뮬레이터를 만든 im과이 모든 J의 차이점을 파악하려고 할 때 그래픽 튜토리얼을 찾고있었습니다. 누군가가 그들에게 정교하거나 도움이되는 자료에 대한 링크를 제공 할 수 있습니까?JPanel, JFrame, JComponent, JApplet의 차이점

답변

5

oracle에서 클래스를 찾는 것이 유용 할 수 있습니다. 예 :

http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JFrame.html

당신이 JFrame의이 JComponent에와 JContainer를 확장 것을 볼 수 있습니다.

JComponent는 그릴 수있는 기본 객체이며 JContainer는이를 확장하여 구성 요소를 추가 할 수 있습니다. JPanel과 JFrame은 모두 JComponent를 확장 할 수 있으므로 JComponent를 확장합니다. JFrame은 창을 제공하지만 JPanel은 창 안쪽에있는 패널 일뿐입니다. 그 말이 맞는다면.

+3

부수적으로, 상속 체인은 일부 스윙 구성 요소에 대해서는 우스 꽝입니다. IDE에서 쓸모 없게 만들뿐만 아니라 javadocs를 복잡하게 만드는 경향이 있습니다. 그들은 실제로 그 것을 다시 작성해야합니다. – TheLQ

+1

JFrame은 JComponent 또는 JContainer를 확장하지 않고 java.awt.Container 및 java.awt.Component를이 순서로 확장한다는 점을 지적하고 싶습니다. –

+1

@LucasMorgan 그들은 JFrame을 내가 생각했던 것보다 Swing에 덜 의존하게 만들었 음에 틀림 없습니다. AWT를 사용하기 때문에 JApplet에서 JFrame을 사용할 수 있는지 궁금합니다. –

17

JFrame 및 JApplet은 최상위 컨테이너입니다. 데스크톱 애플리케이션을 만들려면 JFrame을 사용하고 브라우저에서 애플리케이션을 호스팅하려면 JApplet을 사용합니다.

JComponent는 모든 Swing 구성 요소의 추상 클래스이며 새 구성 요소의 기본 클래스로 사용할 수 있습니다. JPanel은 거의 모든 용도에 사용할 수있는 간단한 사용 가능한 구성 요소입니다.

재미있는 프로젝트이므로 JPanel을 사용하여 JFrame 또는 JApplet에서 호스트하는 것이 가장 간단한 방법입니다. Netbeans는 간단한 예제로 Swing을위한 비주얼 디자이너를 보유하고 있습니다.

38

이러한 클래스는 Java UI 디자인의 공통 확장 점입니다. 첫째로, 그들이 반드시 서로에게 직접적으로 많은 것을 할 필요가 없다는 것을 깨달으십시오, 그래서 그들 사이의 관계를 찾는 것은 비생산적인 것일 수 있습니다.

JApplet - 대화 형 웹 페이지처럼 브라우저 컨텍스트 내에서 실행할 코드를 작성하는 기본 클래스입니다. 이것은 시원하고 모든 것이지만 현실 세계에서 좋은 연주를위한 가격 인 제한을 가져옵니다. 일반적으로 JApplet은 웹 페이지에 고유 한 UI를 갖고 자 할 때 사용됩니다. 저는 항상 사람들이 애플릿을 사용하여 세션에 대한 상태를 저장하지 않기 때문에 데이터베이스 나 쿠키가 필요하지 않은지 궁금해했습니다.

JComponent - Swing과 상호 작용하려는 객체의 기본 클래스입니다.

JFrame - 창에 있어야 할 물건을 나타내는 데 사용됩니다. 여기에는 테두리 (resizeable y/n?), 제목 표시 줄 (앱 이름 또는 기타 메시지), 컨트롤 (허용/최소화 최소화)/'윈도우 닫기'(아직 앱 종료를 허용 하시겠습니까?)와 같은 다양한 시스템 이벤트에 대한 이벤트 핸들러가 포함됩니다.

JPanel - 다른 요소를 함께 수집하는 데 사용되는 일반 클래스입니다. 이는 시각적 레이아웃 또는 제공된 레이아웃 관리자 중 하나를 사용하여 작업 할 때 더욱 중요합니다. gridbaglayout, 등등. 예를 들어, 예약 한 영역보다 큰 텍스트 상자가 있습니다. 스크롤 창에 텍스트 상자를 놓고 그 창을 JPanel에 넣습니다. 그런 다음 JPanel을 배치하면 레이아웃 측면에서 관리가 용이 ​​해집니다.