A. 발전흐름(시간순서)
1. Swing(이클립스 GUI 개발의 시작)
- 목적 : Sun Microsystems가 98' 에 플랫폼 독립적인 GUI 어플리케이션 개발을 위해 라이브러리 배포
- 지금 안쓰는 이유 : 개발 복잡함, 실행 느림
- 느린 이유
- 각 운영체제는 고유 GUI 외양, 행위 특징 등이 있음. 운영체제의 객체를 사용하지 않고, 모든 것을 처음부터 다시 생성하기 때문(경량 컴포넌트라고 함)
- - Swing의 MVC 방법론( Model - Delegate Architecture) : Delegate;대신한다는 의미, View에 Controller 합친 것을 의미한다.
-> Model & UI Delegate(=View + Controller ) 로 구성
2. SWT(Swing 의 대안으로 나옴)
- 중량 컴포넌트 방식 사용 : 운영체제의 객체를 직접 접근하여 사용(JNI; JAVA Native Interface 통해 사용)
-> 운영체제 마다 GUI 외양이 다를 수 있음(but 인터페이스 방식은 동일)
- 특별한 제약사양 없음
-> Model - Delegate 없이, 자유로운 아키텍처 사용
3. JFACE : SWT 만 사용했을 때 시간이 많이 걸리는 일을 간소화, 자동화 시킨 라이브러리
-> 모델 기반으로 쪼갰다고 한다.
B. SWT/ JFACE 구조
1. SWT : Display, Shell, Widget 으로 구성된다.
-> OS 위에 Display를 얹고 (Display 객체 생성시 자동으로 얹어짐), Display 객체는 OS와 통신한다고 한다.
readAndDispatch 메소드 로 통신상태를 확인한다.
-> Display에 Shell 객체를 얹고
-> Shell 객체에 Widget을 얹는다.
ex) 아래처럼 초기화를 진행한다
Display display = new Display();//Display 객체를 생성하고(이러면 OS 위에 얹어진다)
Shell shell = new Shell(display); //display 객체에 Shell 객체를 얹고
Text helloText = new Text(shell, SWT.CENTER); // shell 객체에 Text Widget을 얹는다.
-> 여기에서 Shell을 열고 shell.open();
-> .isDisposed()로 Shell의 상태를 확인한다.
-> .pack() 메소드 : 필요한 만큼만 구성요소의 공간 할당.
2. JFACE : model-based adapters(=Helper Class)
-> model adapter class는 크게 7개로 이루어 진다.
- Viewer
- Action
- Contribution
- Image
- Font registry
- Dialog
- Wizard
-> JFace는 SWT의 Shell을 ApplicationWindow Class를 통해 만든다.
-> Shell을 Control 할 필요없이 ApplicationWindow 객체가 컨트롤 해 준다.
-> Applicaton Window를 생성하면 Display와 Shell 객체가 자동 생성된다는 뜻이다.
-> ApplicationWindow에는 Shell 표현 메소드가 정해져 있다.
-> 위 메소드를 Override 해서 사용한다.
-> CreateContents(Composite parent): parent라는 이름의 Composite 만든 후 return 하고, ApplicationWindow가 이를 받아 Shell에 보여줌
-> SWT에서 While로 객체 살았는지 죽었는지 체크하는 부분을, JFace는 하나의 메소드로 정리했다.
-> Open(true)는 윈도우 닫힐 때 까지 대기해라, false는 작업 끝나면 바로 자원을 돌려줘라 는 의미이다.
-> 남은 객체 dispose는 수동으로 해 줘야 한다.
참고
elvis-note.tistory.com/entry/Swing%EA%B3%BC-SWTJFace-1
www.zentut.com/java-swing/introduction-to-java-swing/
hangumkj.blogspot.com/2009/12/eclipseswtjface-eclipse-rcpplugins-gef.html : 학습 커리큘럼 자료
'Automotive > EclipseRCP' 카테고리의 다른 글
Eclipse RCP (Rich Client Platform) - 5.다른 plug-ins으로 부터 application model 확장하기 (0) | 2022.01.21 |
---|---|
Eclipse RCP (Rich Client Platform) - 4.Eclipse application 구조 설명 (0) | 2022.01.21 |
Eclipse RCP (Rich Client Platform) - 3.마법사를 통해 RCP application 만들기 (0) | 2022.01.21 |
Eclipse RCP (Rich Client Platform) - 2.설치 (0) | 2022.01.21 |
Eclipse RCP (Rich Client Platform) - 1.소개 (0) | 2022.01.21 |