Hello World erweitert

Das Beispiel zeigt ein leicht graphisch erweitertes Hello World Programm mit einem Textfeld, einem Label und einem Button und demonstriert zentrale Aspekte des Programmierens mit dem Standard Widget Toolkit (SWT).

Das Beispiel zeigt ein 150 x 150 Pixel großes Fenster mit einem Textfeld, einem Label und einem Button, der dazu dient, den Text des Textfeldes dem Label hinzuzufügen.

Der Einfachheit halber enthält die Klasse lediglich die main()-Methode, in der sich gesamte Programm-Routine befindet.
Zunächst wird ein Display-Objekt erzeugt und durch dessen Übergabe an den Konstruktor das Hauptfenster als Shell gebildet. Die Methode setText() setzt einen Titel auf die Fensterleiste.

Durch setLayout() wird der Shell ein Layout-Manager zugeordnet, der die Anordnung der Kindelemente der Shell übernimmt. Das hier verwendete FillLayout ist das einfachste der SWT-Layout-Manager. Es ordnet alle Elemente in einer Reihe an und weist ihnen die selbe Größe zu. Das stylebit SWT.VERTICAL legt die vertikale Anordnung der Elemente fest, sodass alle folgenden, der Shell hinzugefügten Elemente nach dieser Weise angeordnet werden.

Das erste ist ein Textfeld vom Typ Text. Wie alle Widgets bekommt es als ersten Parameter das übergeordnete Composite, die Shell, zugeordnet. Ein zweiter Parameter in Form eines stylebits kann hier Verwendung finden, um weitere unveränderliche Konfigurationen vorzunehmen. Dies ist hier jedoch nicht der Fall, sodass an dieser Stelle SWT.NONE übergeben wird.
Der Inhalt eines Textfeldes kann zur Laufzeit geändert werden. Deshalb wird er nicht durch einen stylebit, sondern durch eine eigene Methode, setText(), festgelegt.

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Monitor;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class SWTHelloWorld {

    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setText("Hallo Welt");
        shell.setLayout(new FillLayout(SWT.VERTICAL));

        Text text = new Text(shell, SWT.NONE);
        text.setText("Welt");
        Label label = new Label(shell, SWT.NONE);
        label.setText("Hallo " + text.getText());
        Button button = new Button(shell, SWT.PUSH);
        button.setText("Klick");
        button.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                label.setText("Hallo " + text.getText());
            }
        });
        shell.setSize(150, 150);
        Monitor mon = display.getPrimaryMonitor();
        Rectangle mRect = mon.getBounds();
        int x = (mRect.width - 150) / 2;
        int y = (mRect.height - 150) / 2;
        shell.setLocation(x, y);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }
}

Ähnlich verhält es sich beim Label, einem nicht durch den User veränderbaren Textbereich. Es bekommt, angehängt an ein fest kodiertes "Hallo ", den Inhalt des Textfeldes zugewiesen.
Beim dritten Element handelt es sich um einen Button. Er wird durch das stylebit SWT.PUSH als einfacher Push-Button, in Abgrenzung zum Radiobutton, zur Checkbox oder einem Toggle-Button, definiert. Nach Zuweisung der Aufschrift wird er bei einem SelectionListener angemeldet, der hier als anonymes Objekt eines SelectionAdapter realisiert ist. Seine Methoden widgetSelected() wird überschrieben und setzt wie o.a. den Text des Textfeldes auf das Label.

Hallo Welt

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.