SWT - Gruppenbeispiel

SWT - Gruppenbeispiel

Was ist Gruppe?

In SWT ist Group eine Unterklasse einer Composite-Klasse. Group wird verwendet, um das Erscheinungsbild der Anwendung zu verbessern und die gesamte Anwendung übersichtlicher zu gestalten. Es wird einen rechteckigen Rahmen um alle untergeordneten Widgets ziehen.

Gruppen-Widget unterstützt fünf Stile (eigentlich ist es nicht viel anders)

1) SWT.SHADOW_IN
2) SWT.SHADOW_OUT
3) SWT.SHADOW_NONE
4) SWT.SHADOW_ETCHED_IN
5) SWT.SHADOW_ETCHED_OUT

Wie erstelle ich ein Gruppen-Widget?

Um die Organisation zu verbessern, wird die Gruppe normalerweise in einer separaten Klasse erstellt und muss die Klasseextend the Compositehaben.

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;

public class SWTGroup extends Composite
{
    public SWTGroup(Composite parent)
    {
        super(parent, SWT.NONE);
        this.setSize(300, 300);

        Group group = new Group(this, SWT.SHADOW_ETCHED_IN);
        group.setLocation(50, 50);

        group.setText("Group SHADOW_IN");

        Label label = new Label(group, SWT.NONE);
        label.setText("Label in Group");
        label.setLocation(20,20);
        label.pack();

        Button button = new Button(group, SWT.PUSH);
        button.setText("Push button in Group");
        button.setLocation(20,45);
        button.pack();

        group.pack();

    }
}

Die SWTGroup (Gruppenklasse) kann nicht direkt ausgeführt werden. Sie benötigt eine Anwendung, um den Konstruktor aufzurufen.

Hier erstelle ich eine Main-Klasse zum Aufrufen von SWTGroup und füge sie der Shell zur Anzeige hinzu.

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class SWTMain {

public static void main (String [] args) {
    Display display = new Display ();
    Shell shell = new Shell(display);
    shell.setText("SWT Group Example");

    SWTGroup swtGroup = new SWTGroup(shell);

    shell.pack();
    shell.open();

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

image

Warum muss ich eine separate Gruppenklasse erstellen?

Es ist einfach nichts Falsches, die Group-Klasse in die Main Shell-Anzeigeklasse aufzunehmen. Durch die separate Gruppenklasse wird unsere SWT-Anwendung übersichtlicher und leichter zu warten.

Hier ist das Beispiel, um alles in einer Klasse zusammen zu fassen, es ist nur ein bisschen chaotisch ...

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class SWTMain {

public static void main (String [] args) {
    Display display = new Display ();
    Shell shell = new Shell(display);
    shell.setText("SWT Group Example");

    Group group = new Group(shell, SWT.SHADOW_IN);
    group.setLocation(50, 50);

    group.setText("Group SHADOW_IN");

    Label label = new Label(group, SWT.NONE);
    label.setText("Label in Group");
    label.setLocation(20,20);
    label.pack();

    Button button = new Button(group, SWT.PUSH);
    button.setText("Push button in Group");
    button.setLocation(20,45);
    button.pack();

    group.pack();

    shell.setSize(500,500);
    shell.open();

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