화면에 표시되는 주요 클래스 구조 Widget/Control/Composite




SWT/JFace에서 화면 구성시 가장 많이 다루게 되는 주요 클래스인 Widget, Control, Composite이다.


Widget과 Control클래스는 실제로 직접 사용할 일은 적다. 대신 이를 상속받는 Label, Shash, ProgressBar, Button,...등의 하위 요소를 직접 다룰 일이 많다. 대신 Composite은 다른 위젯을 하위 위젯으로 포함 할 수 있기 때문에 Composite클래스 자체도 많이 다루게 되고 하위 클래스들인 SashForm, ToolBar, Tree, Combo, Group....등 역시 많이 다루게 된다.


Widget : 데이터 오브젝트 참조가능

Control 데이터 오브젝트 참조가능, 크기 및 위치를 갖음.

Composite : 데이터 오브젝트 참조가능, 크기 및 위치를 갖음. 다른 위젯객체를 하위 요소로 추가할 수 있음.




Widget


Widget을 한마디로 정의하면 GUI기반 어플리케이션에서 화면을 구성하는 요소이고 사용자가어플리케이션과 상호작용 할 수 있도록 하는 '객체'이다. 


org.eclipse.swt.widgets.Widget

  • 화면에 표시되는 요소의 기능을 정의한 추상 클래스이다.
  • 직접 Widget Class 객체를 만들어 사용하는 경우는 없지만, 모든 화면 구성요소는 Widget의 하위 클래스이다.
  • 그렇기 때문에 기본적인 개념만 중요하지 실제 구현하여 프로그래밍 하는 부분은 Widget을 상속받는 하위 클래스들이다.


 Widget 메소드

 기능

 setData(String, Object)

 문자열을 키값으로 위젯에 데이터 객체를 추가한다.

 getData()

 위젯에서 데이터와 관련된 객체를 반환한다.

 getData(String)

 문자열에 매칭 되는 데이터 객체를 반환한다.

 getStyle()

 위젯 스타일에 해당하는 정수를 반환한다.

 getDisplay()

 위젯과 연관된 Display객체를 반환한다.

 toString()

 위젯 클래스를 표현하는 문자열을 반환한다.

 dispose()

 위젯과 위젯 자원에 대한 할당을 해제한다.

 isDisposed()

 위젯의 할당을 해제하였는지 여부를 

-Widget 주요 메소드-


메소드의 기능을 살펴 보아 Widget을 상속하는 객체는 다른 객체를 추가/반환 이 가능하고, 자신이 속한 Display객체를 참조하고 있다는 점을 알 수 있다.



 



Control


SWT/JFace는 각기 다른 운영체제에서 제공한 위젯을 사용해 GUI 어플리케이션을 만든다. 이때 플랫폼마다 서로 다른 GUI구성요소의 세트를 제공한다. 이들 운영체제에서 제공하는 GUI구성요소와 직접 짝을 이루는 것이 Control이다. 때문에 Control의 handle필드를 통해서 직접 운영체제 요소에 접근 하여 객체를 조작할 수 있다.


org.eclipse.swt.widgets.Control

  • 크기와 위치를 갖는다. (=화면에 표시된다)
  • 실제 프로그램의 화면 구성요소가 된다.


 Widget 메소드

 기능

 크기와 관련된 메소드

 getSize()

 위젯 크기를 표현하는 Point 객체를 반환한다.

 setSize(int, int)

 너비와 길이 값을 입력받아 위젯 크기를 설정한다.

 setSize(Point)

 Point객체를 기반으로 위젯의 크기를 설정한다.

 computeSize(int, int)

 위젯 내용을 모두 보여줄 수 있는 면적을 반환한다.

 computeSize(int, int, boolean)

 위젯 내용을 모두 보여줄 수 있는 면적을 반환하고, 위젯 특성이 바뀌었는지를 알려준다.

 pack()

 위젯을 선호하는 크기로 재조정한다.

 pack(boolean)

 위젯을 선호하는 크기로 재조정하고, 위젯 특성이 바뀌었는지를 알려준다.

 위치와 관련된 메소드
 getLocation()

 위젯 부모에 대한 상대 위치를 반환한다.

 setLocation(int, int)

 위젯 부모에 대한 상대 위치를 설정한다.
 getBounds()  위젯의 크기와 부모에 대한 상대 위치를 반환한다.
 setBounds(int, int, int, int)

 위젯의 크기와 부모에 대한 상대 위치를 설정한다.

 toControl(int, int)

 화면 기준 좌표를 컨트롤 기준 Point값으로 바꾼다.

 toControl(Point) 

 화면 기준 Point값을 컨트롤 기준 Point값으로 바꾼다.

 toDisplay(int, int)

 컨트롤 기준 좌표를 컨트롤 기준 Point값으로 바꾼다.

 toDisplay(Point)

 컨트롤 기준 Point값을 Point값으로 바꾼다.

-Control 주요 메소드-


대부분의 메소드가 크기와 위치와 관련된 내용이다. 즉 Control하위 객체는 모두 크기와 위치를 갖는 화면 구성요소라는 것 을 알 수 있다.


<참고사항>


setSize()메소드 보다는 pack()을 사용하는 것을 권장한다.

setSize()의 경우 해상도와 플랫폼의 차이점 때문에 환경이 다른 경우 화면이 깨지는 현상이 발 생할 수 이있다. 

* pack()은 Control객체가 포함하는 하위 위젯 요소에 따라서 자동으로 크기를 재조정 하여 준다.





Composite


다른 위젯을 포함 할 수 있는 객체이다.


org.eclipse.swt.widgets.Composite

  • 다른 위젯을 자식요소로 가질 수 있다.
  • 가장 많이 쓰이고 중요하다.  실제 프로그래밍 시에 하나의 화면, 하나의 구역이나 영역으로 사용된다.
 

 Widget 메소드

 기능

 getChildren()

 자식요소의 Control객체의 배열을 반환한다. 

 getLayout()

 Composite에 연결한 레이아웃 객체를 반환한다.

 setLayout(Layout)

 Composite에 레이아웃을 설정한다.

 getTabList()

 탭 순서에 따른 Control객체의 배열을 반환한다.

 setTabList(Control[])

 자식요소의 위젯들의 탭 순서를 설정한다.

-Composite 주요 메소드-


요점은 간단하다. 다른 Widget요소를 자식으로 가질 수 있는 묶음단위 이다. 자식요소들에게 탭 순서를 정하거나 반환 받을 수 있고, 레이아웃을 지정하여 화면에 표시되는 구성을 변경 할 수 있다. 주로 프로그래밍시 하나의 구분단위로 사용된다. (화면1개 혹은 영역)



'프로그래밍 > SWT & JFace' 카테고리의 다른 글

SWT/JFace Layout  (0) 2016.02.15
JFace Event처리 (Action and Contribution)  (0) 2016.02.12
SWT Event 처리 (Event and Listener)  (0) 2016.02.11
TabFolder를 이용하여 탭화면 구성하기  (0) 2016.02.10
SWT/JFace 기본 동작 구조  (2) 2016.01.11
Hello JFace  (0) 2016.01.06
Hello SWT  (0) 2016.01.06
SWT/JFace 기본개념 및 개발환경 구축  (0) 2016.01.06

이 글을 공유하기

댓글

Email by JB FACTORY