SWT

62 downloads 135 Views 121KB Size Report
SWT. Thomas Wilhelm. Java. -The Standard Widget Toolkit-. SWT. Thomas Wilhelm. Inhaltsverzeichnis. 1. Was ist SWT? - Vorteile von SWT. - Nachteile von  ...
Java

SWT -The Standard Widget ToolkitThomas Wilhelm

Inhaltsverzeichnis

SWT

1. Was ist SWT? - Vorteile von SWT - Nachteile von SWT

2. Vorbereitungen für SWT 3. Das erste Programm in SWT 4. Widgets und Styleparameter 5. SWT - Layouts

Thomas Wilhelm

1

Was ist ein Widget ?

SWT

• Widget ist normalerweise eine abstrakte Klasse von der alle GUI Elemente (z.B. Button oder Slider) abgeleitet werden. Oft werden allerdings die Elemente selber widget genannt.

Thomas Wilhelm

Was ist SWT ?

SWT

• SWT heisst Standard Widget Toolkit • Stellt eine Anzahl elemtarer GUIKlassenbibliotheken zur Verfügung • Vergleichbar mit Java – Swing, benutzt aber die Widgets des OS. Thomas Wilhelm

2

Vorteile von SWT

SWT

• Benutzeroberflächen lassen sich praktisch nicht von nativen Applikationen unterscheiden. • SWT ist nicht so Ressourcen hungrig wie Java Swing. • Die Ansprechgeschwindigkeit ist deutlich schneller, da direkt auf die Ereignisverarbeitung des jeweiligen OS aufgesetzt wird. Thomas Wilhelm

Vorteile von SWT

SWT

• SWT verhält sich robuster und toleranter gegenüber der verwendeten Hardware und der verschiedenen Grafikeinstellungen als AWT. • Berichte über SWT Applikationen die problemslos liefen, wo AWT und Swing Anwendungen auf Grund von Direct X Inkompabilitäten abstürzten.

Thomas Wilhelm

3

Nachteile von SWT

SWT

• SWT basierte Anwendungen laufen nur auf den Platformen ab, für die auch ein SWT implementiert wurde. (Allerdings ist dies für die „normalen“ Platformen der Fall). • Es gibt einzelne Funktionen bei denen das Verhalten von Dialogelementen auf verschiedenen Platformen abweichen.

Thomas Wilhelm

Nachteile von SWT

SWT

• SWT benutzt für Bilder, Farben und Fonts Betriebssystemressourcen, die sobald sie nicht mehr benötigt werden, wieder freigegeben werden müssen.

Thomas Wilhelm

4

Vorbereitungen

SWT

• Um eine Java SWT Anwendung IN ECLIPSE zum laufen zu bringen, gibt es 2 Möglichkeiten: ¾ Kopieren des SWT JAR´s und die swt-win32-3062.dll in den SDK Ordner. ¾ Anziehen des JAR´s und angeben der swt-win323062.dll im Project selbst. Thomas Wilhelm

Kopieren des JAR´s und der dll

SWT

Kopieren der Datei „swt-win32-3062.dll“ Von: ...\Eclipse\plugins\org.eclipse.swt.win32_3.0.0\os\win32\x86 Nach : ...\j2sdk1.4.2_04\jre\bin\

Kopieren der Datei „swt.jar“ Von: ...\Eclipse\plugins\org.eclipse.swt.win32_3.0.0\ws\win32\ Nach : ...\j2sdk1.4.2_04\jre\lib\ext\ Thomas Wilhelm

5

Der Klassiker

SWT

Import org.eclipse.swt.widgets.*; public class HelloWorld { public static void main(String[] args){ Display display = new Display(); Shell shell = new Shell(display); shell.setSize(200,100); shell.open(); while(!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }

Thomas Wilhelm

Das Display

SWT

• Die Klasse Display ist das Verbindungsglied zwischen Java-Applikation und Betriebssystem.

• Für jeden Thread der GUI Operationen ausführt wird eine Instanz der Klasse Display erzeugt.

Thomas Wilhelm

6

Die Shell

SWT

• Die Klasse Shell repräsentiert ein Fenster auf dem Desktop des jeweiligen Betriebssystems.

• Vergleichbar mit JFrame von Java Swing, allerdings können von der Shell keine Unterklassen gebildet werden.

Thomas Wilhelm

Die Schleife

SWT

while(!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose();

Thomas Wilhelm

7

Widgets und ihr parent

SWT

• Widgets können nicht ohne parent existieren. Der parent kann nicht nachträglich geändert werden. • Der Typ des parents ist abhängig vom jeweiligen widget, z.B. ist der parent eines MenuItems ein Menu. Deshalb gibt es keine getParent() – Methode da hier ein Cast nötig wäre, diese werden jedoch i.A. vermieden.

Thomas Wilhelm

Styleparameter

SWT

• Alle vordefinierten Styleparameter sind im package org.eclipse.swt.SWT definiert. • Es gibt create-only Attribute, die nur beim erstellen von widgets gesetzt werden können. • Attribute können mit dem OR – Operator kombiert werden. Thomas Wilhelm

8

Endlich mal ein Beispiel

SWT

Button button = new Button(shell, SWT.NONE); button.setText("Ich bin ein SWT Button"); ProgressBar progressBar = new ProgressBar( shell, SWT.SMOOTH | SWT.INDETERMINATE);

Thomas Wilhelm

Keine add() - Methode?

SWT

• Es gibt weder eine add() – Methode um widgets einem parent hinzuzufügen, noch eine remove() – Methode um sie zu entfernen.

Thomas Wilhelm

9

Layouts

SWT

• In Java SWT wurden neue Layouts eingeführt welche sich teilweise von denen von Java Swing unterscheiden, aber auch sehr ähnlich sind.

• In Java SWT gibt es folgende Layouts:

Thomas Wilhelm

FillLayout

SWT

• Das FillLayout ist das einfachste Layout. • Es füllt den vorhanden Platz mit den widgets entweder in einer Zeile oder in einer Spalte.

Thomas Wilhelm

10

RowLayout

SWT

• Das RowLayout positioniert die widgets ebenfalls in einer Zeile oder Spalte, jedoch wird überschüssiger Raum nicht genutzt. • Wird oft in Verbindung mit Composites (ungefähr so was wie Panels) genutzt, da man mit einem RowLayout oft nicht das gewünschte Resultat bekommt.

Thomas Wilhelm

GridLayout

SWT

• Das GridLayout wird ein Art Gitter benutzt (ähnlich wie beim GridLayout von Java Swing), allerdings wird hier nur die Anzahl der Zeilen angegeben. Ist eine Zeile voll, wird automatisch umgebrochen. • Dieses Layout ist mächtiger als alle anderen bisher. Über „Griddata“ können den Widgets zusätzliche Eigenschaften bzg. Ihres Aussehens mitgegeben werden (vgl. GridBagConstrains). Thomas Wilhelm

11

GridLayout

SWT

• Beispiel: GridLayout layout = new GridLayout(); layout.numColumns = 3; Shell.setLayout(layout); GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); Button.setLayoutData(data); Thomas Wilhelm

FormLayout

SWT

• Das FormLayout ist das flexibelste Layout in SWT. • Der Algorithmus basiert auf dem sog. „Concept of Attachments“. Bei diesen Algorithmus wird die Kante eines Widgets an die Kante eines anderen Widgets oder an eine Position „angebracht“. • Der große Vorteil des FormLayout besteht darin dass es unabhängig von der „child order“ ist. Thomas Wilhelm

12

FormLayout

SWT

• Ein Nachteil des FormLayout ist, dass es nicht das größte widget ausmachen kann und somit nicht in der Lage ist andere widgets auf diese Größe anzupassen. • Das FormLayout benutzt die Klasse FormData um die widgets zu kontrollieren und zu konfigurieren. • FormData verlässt sich stark auf Instanzen von FormAttachment. Thomas Wilhelm

Ein Beispiel ist hier nötig

SWT

FormLayout layout = new FormLayout(); shell.setLayout(layout); Button button = new Button(shell, SWT.PUSH); button.setText(„Button“); FormData data = new FormData(); data.left = new FormAttachment(30); Button.setLayoutData(data); Thomas Wilhelm

13

Das wars…..

SWT

Fragen??? Thomas Wilhelm

Quellen

SWT

• InternetArtikel : Java SWT InternetArtikel

• Buchempfehlung: http://amazon.de/SWT-Buch

Thomas Wilhelm

14

SWT Examples in Eclipse

SWT

• Installieren der SWT Examples in Eclipse: • Help -> SoftwareUpdates -> Find and Install -> search for new features to install -> alle SDK Examples markieren und downloaden • Anzeigen der Examples: • Window -> Show View -> Other -> SWT Examples -> SWT Controls bzw. SWT Layouts (anschließend Doppelclick auf den Reiter) Thomas Wilhelm

15