위지트(widget)

SWT에는 여러 가지 기능들이 포함되어 있지만 시스템의 코어 기능인 위지트(widget), 레이아웃이벤트만 알고 있어도 유용하고 강력한 응용프로그램을 구현할 수 있습니다.

위지트(widget) 응용프로그램 구조

플랫폼 Workbench 확장을 사용하여 UI 요소를 제공할 경우 Workbench에서 SWT 시작 메커니즘을 대신 처리합니다.

Workbench 외부에서 처음부터 SWT 응용프로그램을 작성할 경우 SWT의 응용프로그램 구조를 더 잘 알고 있어야 합니다.

일반적인 독립형 SWT 응용프로그램의 구조는 다음과 같습니다.

다음 코드 스니펫은 org.eclipse.swt.examples.helloworld.HelloWorld2 응용프로그램에서 개작한 것입니다. 응용프로그램에서 "Hello World"라는 문자열만 표시하기 때문에 다른 위지트(widget) 이벤트에 등록할 필요는 없습니다.

   public static void main (String [] args) {
      Display display = new Display ();
      Shell shell = new Shell (display);
      Label label = new Label (shell, SWT.CENTER);
      label.setText ("Hello_world");
      label.setBounds (shell.getClientArea ());
      shell.open ();
      while (!shell.isDisposed ()) {
         if (!display.readAndDispatch ()) display.sleep ();
      }
      display.dispose ();
   }

디스플레이

디스플레이는 SWT와 기본 플랫폼의 GUI 시스템 간 연결을 나타냅니다. 디스플레이는 주로 플랫폼 이벤트 루프를 관리하고 UI 스레드와 다른 스레드 간의 통신을 제어하는 데 사용됩니다. UI 스레딩 문제에 대한 전체 설명은 클라이언트의 스레딩 문제를 참조하십시오.

대부분의 응용프로그램의 경우 위에서 사용한 패턴을 따를 수 있습니다. 다른 창을 만들기 전에 디스플레이를 작성해야 하고 쉘을 닫을 때는 표시를 삭제해야 합니다. 다중 스레드 응용프로그램을 설계하는 경우를 제외하면 디스플레이에 대해 더 많이 생각할 필요가 없습니다.

은 OS 플랫폼 창 관리자가 관리하는 "창"입니다. 맨 위 레벨의 쉘은 디스플레이의 하위로 작성되는 쉘입니다. 이 창은 사용자가 응용프로그램을 사용하면서 이동, 크기 조정, 최소화, 최대화하는 창입니다. 보조 쉘은 다른 쉘의 하위로 만들어진 쉘입니다. 이 창은 대개 대화 상자 창이나 다른 창의 컨텍스트에서만 존재하는 임시 창으로 사용됩니다.

상위 및 하위

맨 위 레벨의 쉘인 경우를 제외하면 모든 위지트(widget)에는 상위가 있습니다. 최상위 레벨 쉘에는 상위가 없지만 이러한 쉘은 특정 디스플레이와 관련하여 작성됩니다. getDisplay()를 사용하여 이 표시에 액세스할 수 있습니다. 다른 모든 위지트(widget)는 최상위 레벨 쉘의 하위 항목(직접 또는 간접)으로 작성됩니다.

컴포지트 위지트(widget)는 하위를 가질 수 있는 위지트(widget)입니다.

응용프로그램 창이 표시되면 이를 위지트(widget) 트리나 루트가 쉘인 계층 구조로 생각할 수 있습니다. 응용프로그램의 복잡도에 따라 쉘의 단일 하위, 여러 하위 또는 하위를 가진 중첩된 계층의 컴포지트가 있을 수 있습니다.

스타일 비트

위지트를 작성할 때 일부 위지트 특성을 설정해야 하며 그 후에는 이 특성을 변경할 수 없습니다. 예를 들어, 목록에 선택사항이 한 개 또는 여러 개 있을 수 있고, 화면이동 표시줄이 있거나 없을 수 있습니다.

스타일이라고 하는 이러한 특성은 생성자에서 설정됩니다. 모든 위지트(widget) 생성자는 원하는 모든 스타일의 비트 관련 OR을 지정하는 int 인수를 필요로 합니다. 특정 스타일을 힌트로 간주하는 경우도 있습니다. 이는 모든 플랫폼에서 사용할 수 없지만 지원하지 않는 플랫폼에서는 제외하게 됨을 의미합니다.

스타일 상수는 SWT 클래스에 Public Static 필드로 존재합니다. 모든 위지트(widget) 클래스의 적용 가능한 상수 목록은 SWT의 API 참조서에 포함되어 있습니다.

자원 삭제

SWT 밑에 있는 플랫폼에서는 OS 자원을 명시적으로 할당 및 해제해야 합니다. 플랫폼 응용프로그램 구조를 위지트(widget) 툴킷에 반영한다는 SWT 설계 철학에 따라 SWT에서는 할당한 OS 자원을 명시적으로 삭제할 것을 요구합니다. SWT에서는, Widget.dispose() 메소드를 사용하여 특정 툴킷 오브젝트와 연관된 자원을 삭제합니다.

기본 규칙은 오브젝트를 만들 경우 이를 삭제해야 한다는 것입니다. 이 개념을 더 자세히 설명하는 특정한 기본 규칙은 다음과 같습니다.

이 규칙에는 한 가지 예외가 있습니다. 직사각형과 같은 단순한 데이터 오브젝트에서는 운영 체제 자원을 사용하지 않는다는 것입니다. 이들은 dispose() 메소드를 갖지 않으므로 이들을 해제할 필요는 없습니다. 의심스러울 경우 특정 클래스에 대한 javadoc을 확인하십시오.

이 주제에 대한 자세한 설명은 운영 자원 관리를 참조하십시오.