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