devstory

Le Tutoriel de Java SWT Radio Button

1- SWT Radio Button

Dans SWT, la radio est un objet de la classe Button dont le style est SWT.RADIO.
Radio button a les deux états sélectionné et non sélectionné. Lorsque les Radio button sont combinés (combined) en un Group ou un Composite, à la fois, un radio button est sélectionné. Contrairement au Toggle button, des utilisateurs peuvent désélectionner un Radio button en sélectionnant un autre Radio button dans le même Groupe (ou Composite).
// Create a radio button

Button radio = new Button(parent, SWT.RADIO);

RadioButton:

// Create a group to contain 2 radio (Male & Female)
Group genderGroup = new Group(shell, SWT.NONE);
genderGroup.setLayout(new RowLayout(SWT.HORIZONTAL));


Button buttonMale = new Button(genderGroup, SWT.RADIO);
buttonMale.setText("Male");

Button buttonFemale = new Button(genderGroup, SWT.RADIO);
buttonFemale.setText("Female");
Vous pouvez également définir l'icône (icon) pour radio button en utilisant de la méthode setImage.
InputStream input
        = RadioButtonDemo.class.getResourceAsStream("/org/o7planning/swt/icon/male-16.png");
Image image = new Image(null, input);

radioButton.setImage(image);       

2- Exemple de RadioButton

Des Radio button sont mis dans le même Group ou Composite, un seul bouton est sélectionné à un moment donné. Lorsque vous sélectionnez un bouton radio différent dans le même groupe (ou Composite), la radio actuelle sera désélectionnée. Donc, vous devriez mettre des radios avec le même thème dans le même groupe (ou Compsite).
RadioButtonDemo.java
package org.o7planning.swt.radiobutton;

import org.eclipse.swt.SWT;
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;

public class RadioButtonDemo {

    public static void main(String[] args) {

        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setText("SWT Radio Button (o7planning.org)");

        RowLayout rowLayout = new RowLayout();
        rowLayout.marginLeft = 10;
        rowLayout.marginTop = 10;
        rowLayout.spacing = 15;
        shell.setLayout(rowLayout);

        // Create a group to contain 2 radio (Male & Female)
        // Tạo một nhóm để chứa 2 radio (Male & Female).
        Group genderGroup = new Group(shell, SWT.NONE);
        genderGroup.setLayout(new RowLayout(SWT.HORIZONTAL));

        Label label = new Label(genderGroup, SWT.NONE);
        label.setText("Your gender: ");

        Button buttonMale = new Button(genderGroup, SWT.RADIO);
        buttonMale.setText("Male");

        Button buttonFemale = new Button(genderGroup, SWT.RADIO);
        buttonFemale.setText("Female");

        // Group
        Group titleGroup = new Group(shell, SWT.NONE);
        titleGroup.setLayout(new RowLayout(SWT.VERTICAL));
        titleGroup.setText("Select title");

        Button buttonMr = new Button(titleGroup, SWT.RADIO);
        buttonMr.setText("Mr");

        Button buttonMrs = new Button(titleGroup, SWT.RADIO);
        buttonMrs.setText("Mrs");

        Button buttonMs = new Button(titleGroup, SWT.RADIO);
        buttonMs.setText("Ms");

        shell.setSize(400, 250);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }

}

3- Traitement des événement pour RadioButton

L'exemple ci-dessous traite l'événement lorsque l'utilisateur sélectionne radio button.
RadioButtonEventDemo.java
package org.o7planning.swt.radiobutton;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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 RadioButtonCancelChangeDemo {

    public static void main(String[] args) {

        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setText("SWT Radio Button (o7planning.org)");

        RowLayout rowLayout = new RowLayout(SWT.VERTICAL);
        rowLayout.marginLeft = 10;
        rowLayout.marginTop = 10;
        rowLayout.spacing = 15;
        shell.setLayout(rowLayout);

        // Group
        Composite  genderGroup = new Composite (shell, SWT.NONE);
        genderGroup.setLayout(new RowLayout(SWT.HORIZONTAL));

        Label label = new Label(genderGroup, SWT.NONE);
        label.setText("Select Titles: ");

        // Radio - mrs
        Button buttonMale = new Button(genderGroup, SWT.RADIO);
        buttonMale.setText("Male");

        // Radio - mss
        Button buttonFemale = new Button(genderGroup, SWT.RADIO);
        buttonFemale.setText("Female");
        
        Label labelAnswer = new Label(shell, SWT.NONE);
        labelAnswer.setForeground(display.getSystemColor(SWT.COLOR_BLUE));
        
        
        buttonMale.addSelectionListener(new SelectionAdapter()  {

            @Override
            public void widgetSelected(SelectionEvent e) {
                Button source=  (Button) e.getSource();
                
                if(source.getSelection())  {
                    labelAnswer.setText("You are "+ source.getText());
                    labelAnswer.pack();
                }
            }
            
        });
        
        buttonFemale.addSelectionListener(new SelectionAdapter()  {

            @Override
            public void widgetSelected(SelectionEvent e) {
                Button source=  (Button) e.getSource();
                
                if(source.getSelection())  {
                    labelAnswer.setText("You are "+ source.getText());
                    labelAnswer.pack();
                }
            }
            
        });

        shell.setSize(400, 250);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }

}