Die Anleitung zu Java SWT Toggle Button
View more Tutorials:
Im SWT ist toggle ein Objekt der class Button mit dem Stil vom SWT.TOGGLE.
Toggle button hat 2 Zustände : gewählt und nichtgewählt. Nach dem Standard sind die Toggle Button selbstständig, unabhängig von den anderen Toggle Button
// Create a radio button Button radio = new Button(parent, SWT.TOGGLE);
Die Toggle , die in die unterschiedlichen Betriebssystem laufen, haben die verschiedenen Schnittestelle. Folgend ist das Bild der Toggle Button auf den Betriebssystem von Windows XP und Windows 8:
Toggle Button (Windows XP):

Toggle Button (Windows 8)

Auf Windows 8 treffen Sie nach der Praxis die Schwierigkeit bei der Unterscheidung zwischen Toogle Button mit dem gewählten Zustand und Toggle Button mit dem nichtgewählten Zustand. Eine Maßnahme für die Problemlösung ist die Benutzung der verschiedenen Icon für die Zustand von gewählt und nichtgewählt![]()
// Create a Toggle Button Button appleButton = new Button(parent, SWT.TOGGLE); appleButton.setText("Apple");
Sie können die Icon für Toggle durch die method setImage. setzen

InputStream input = RadioButtonDemo.class.getResourceAsStream("/org/o7planning/swt/icon/apple-16.png"); Image image = new Image(null, input); toggleButton.setImage(image);

Im SWT sind die Toggle Button standardmäßig in dem unterschiedlichen Zustand. Es ändert mit der Behandlung von der Radio Button. Falls die Radio Button in einer gleichen Composite oder Group gesetzt werden: Wenn Sie einen radio button wählen, verlieren die anderen radio button die Wahlmöglichkeiten

ToggleButtonDemo.java
package org.o7planning.swt.togglebutton; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.RowLayout; 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; import org.o7planning.swt.utils.MyImageUtils; public class ToggleButtonDemo { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setText("SWT Toggle Button (o7planning.org)"); RowLayout rowLayout = new RowLayout(); rowLayout.marginLeft = 10; rowLayout.marginTop = 10; rowLayout.spacing = 15; shell.setLayout(rowLayout); Group fruitGroup = new Group(shell, SWT.NONE); fruitGroup.setLayout(new RowLayout(SWT.HORIZONTAL)); Label label = new Label(fruitGroup, SWT.NONE); label.setText("Fruits: "); // Apple Button appleButton = new Button(fruitGroup, SWT.TOGGLE); appleButton.setText("Apple"); Image appleIcon = MyImageUtils.getImage(display, "/org/o7planning/swt/icon/apple-16.png"); appleButton.setImage(appleIcon); // Grape Button grapeButton = new Button(fruitGroup, SWT.TOGGLE); grapeButton.setText("Grape"); Image grapeIcon = MyImageUtils.getImage(display, "/org/o7planning/swt/icon/grape-16.png"); grapeButton.setImage(grapeIcon); // Banana Button bananaButton = new Button(fruitGroup, SWT.TOGGLE); bananaButton.setText("Banana"); Image bananaIcon = MyImageUtils.getImage(display, "/org/o7planning/swt/icon/banana-16.png"); bananaButton.setImage(bananaIcon); shell.setSize(400, 250); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }
Führen Sie das Beispiel (Sehen Sie auf Windows XP & Windows 8)


Das Beispiel stellt die Behandlung der Ereignis dar wenn der Benutzer die Toggle Button klicken


RadioButtonEventDemo.java
package org.o7planning.swt.togglebutton; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; public class ToggleButtonEventDemo { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setText("SWT Toggle Button (o7planning.org)"); RowLayout rowLayout = new RowLayout(SWT.VERTICAL); rowLayout.marginLeft = 10; rowLayout.marginTop = 10; rowLayout.spacing = 15; shell.setLayout(rowLayout); // Composite Composite composite = new Composite(shell, SWT.NONE); composite.setLayout(new RowLayout(SWT.HORIZONTAL)); Label label = new Label(composite, SWT.NONE); label.setText("Select Fruits: "); // Apple Button toggleApple = new Button(composite, SWT.TOGGLE); toggleApple.setText("Apple"); // Grape Button toggleGrape = new Button(composite, SWT.TOGGLE); toggleGrape.setText("Grape"); // Banana Button toggleBanana = new Button(composite, SWT.TOGGLE); toggleBanana.setText("Banana"); Label labelAnswer = new Label(shell, SWT.NONE); labelAnswer.setForeground(display.getSystemColor(SWT.COLOR_BLUE)); SelectionListener selectionListener = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { Button source = (Button) e.getSource(); if (source.getSelection()) { labelAnswer.setText("You select " + source.getText()); labelAnswer.pack(); } else { labelAnswer.setText("You deselect " + source.getText()); labelAnswer.pack(); } } }; toggleApple.addSelectionListener(selectionListener); toggleGrape.addSelectionListener(selectionListener); toggleBanana.addSelectionListener(selectionListener); shell.setSize(400, 250); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }

Wie oben erwähnt unterscheidet der Benutzer auf Windows 8 schwierig die 2 Zustände von gewählt und nichtgewählt der Toggle Button. Die Maßnahme ist die Benutzung der unterschiedlichen Icon für die unterschiedlichen Zustände

IconStateDemo.java
package org.o7planning.swt.togglebutton; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.o7planning.swt.utils.MyImageUtils; public class IconStateDemo { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setText("SWT Toggle Button (o7planning.org)"); RowLayout rowLayout = new RowLayout(); rowLayout.marginLeft = 10; rowLayout.marginTop = 10; rowLayout.spacing = 15; shell.setLayout(rowLayout); Label label = new Label(shell, SWT.NONE); label.setText("Fruits: "); Image iconSelect = MyImageUtils.getImage(display, "/org/o7planning/swt/icon/apple-select-32.png"); Image iconDeselect = MyImageUtils.getImage(display, "/org/o7planning/swt/icon/apple-deselect-32.png"); // Apple Button appleButton = new Button(shell, SWT.TOGGLE); appleButton.setText("Apple"); appleButton.setImage(iconDeselect); appleButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { Button source = (Button) e.getSource(); if (source.getSelection()) { appleButton.setImage(iconSelect); } else { appleButton.setImage(iconDeselect); } } }); shell.setSize(400, 250); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }