2009-08-22 2 views
3

어떻게 JVM이 창을 만들 수 있습니까? jar 파일과 실행 파일 등을 가지고 있다는 것을 알고 있습니다 ... 내가 알고 싶은 것은 데스크톱 응용 프로그램을 둘러싼 프레임이 자바로 만든 창이 얼마나 정확하게 있는지입니다.Java는 어떻게 창을 띄웁니까?

은 설치된 시스템의 그래픽 라이브러리 표준입니까?

답변

7

Java에는 두 가지 유형의 UI 구성 요소가 있습니다. 중량 구성 요소와 경량 구성 요소입니다.

중량 구성 요소는 운영 체제에있는 것의 래퍼입니다. 운영 체제 인 Windows에는 창, 대화 상자 등을 만드는 메서드가 있습니다.

가벼운 구성 요소는 2D 드로잉 API 등을 사용하여 응용 프로그램 내에서 완전히 생성됩니다. 운영 체제는 그것에 대해 아무것도 모릅니다.

두 개의 "공식적인"Java GUI API는 Swing과 AWT입니다. AWT는 일반적으로 애플릿에서 사용됩니다 (어쨌든 초기 애플릿). 중량 구성 요소로 구성됩니다. Swing은 AWT 위에 구축되었지만 일반적으로 데스크톱 애플리케이션을 설계하기위한 훨씬 더 광범위한 API입니다. 대부분의 스윙 구성 요소는 가볍습니다.

Java 데스크톱 응용 프로그램은 하나 이상의 중량 구성 요소로 구성 될 수 있습니다 (경량 구성 요소가 포함될 수 있음). 또는 2D 그리기 API가 중량 구성 요소없이 Windows를 "위장"하기에 충분할 경우 모든 경량 구성 요소가 될 수 있습니다.

Java 응용 프로그램 주위에 표시되는 프레임은 Java2D와 같은 라이브러리 (직접 또는 이와 유사한 API를 사용하는 구성 요소를 통해)로 그려 지거나 영향을받는 것으로 보이는 응용 프로그램의 구성으로 Windows에서 만들어 질 수 있습니다 운영 체제의 테마 및 디스플레이 설정에 따라 다릅니다.

요즘 대부분의 Java 응용 프로그램은 경량입니다.

+0

헤비급 구성 요소가 구현되는 한 기본적으로 응용 프로그램이 실행되는 OS의 빌드 된 그래픽 라이브러리가 구현됩니다. 그리고 경량 구성 요소를 찾았습니다. 가벼운 구성 요소가 중량 구성 요소에 그려지는 것입니까? 이것은 자바 애플리케이션 내부의 다른 객체들의 paintComponenet을 오버 라이드하는 능력을 설명 할 것이다. –

+2

대부분 (모든?) Swing 어플리케이션의 최상위 구성 요소는 AWT Frame 클래스를 확장 한 JFrame으로, 중량이 많은 OS Window입니다.나머지는 일반적으로 가볍기 때문에 설명이 옳습니다. – cletus

+2

* 모두 * 스윙 최상위 구성 요소는 중량이 높습니다. JFrames, JDialogs 등 - 가벼운 구성 요소를 그릴 수있는 무언가가 있어야합니다. – Nate

0

기본적으로 java.awt.Frame 또는 javax.swing.JFrame (또는 이와 동등한 것) 프레임이 기본 윈도우 시스템에 의해 그려집니다. 최근에 (2002), 1.4 도입 된 Frame.setUndecorated 및 관련 방법. 이를 통해 프레임을 장식되지 않은 창 (예 : Window)으로 그릴 수 있으며 Metal과 같은 특정 PL & F는 윈도우 시스템에 위임하지 않고 작동하는 프레임을 그릴 수 있습니다. 이 기능은 분명히 전체 윈도우가 동일한 모양과 느낌을 갖도록 구현되었습니다. 내가 아는 한, 네이티브 윈도우 시스템을 복제하려고하는 Sun의 Look & Feel 구현은이 기능을 구현하지 않습니다.

0

그냥 완료해야합니다 : Windowing 시스템의 기본 구현 위에 얇은 Java 레이어가있는 SWT도 있습니다. AWT 재실행과 같은 종류. Eclipse 프로젝트에서 사용됩니다. 네이티브 L & F에 가까운 일치도를 제공해야하지만 렌더링 속도가 빠릅니다. 그러나 YMMV.

SWT의 단점은 추가 API를 배우고 모든 대상 플랫폼에서 라이브러리를 사용할 수 있어야한다는 것입니다. 예를 들어, 최근까지 OS-X 버전은 불완전하고 구식이었습니다 (Carbon, Cocoa 기반이 아닙니다).

관련 문제