SWT - Exemple de groupe

SWT - Exemple de groupe

Qu'est-ce que le groupe

Dans SWT, Group est une sous-classe d'une classe Composite. Le groupe est utilisé pour améliorer l'apparence de l'application et rendre l'ensemble de l'application plus organisé. Il dessinera une bordure rectangulaire autour de tous ses widgets enfants.

Le widget de groupe prend en charge cinq styles (en fait, il n'y a rien de bien différent)

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

Comment créer un widget de groupe?

Pour le rendre plus organisé, le groupe est généralement créé dans une classe séparée et doit être classé dansextend the Composite.

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();

    }
}

Le SWTGroup (classe Group) ne peut pas être exécuté directement, il a besoin d'une application pour appeler son constructeur.

Ici, je crée une classe principale pour appeler SWTGroup et l'ajouter à Shell pour l'affichage.

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

Pourquoi ai-je besoin de créer une classe de groupe séparée?

Il n'y a rien de mal à inclure la classe Group dans la classe d'affichage du shell principal. Une classe de groupe séparée rendra notre application SWT plus organisée et plus facile à entretenir.

Voici l'exemple pour inclure tous ensemble dans une classe, c'est juste un peu compliqué…

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 ();
}
}