Le Tutoriel de Java SWT Combo

1- SWT Combo

Combo est un composant de l'interface populaire. Il permet aux utilisateurs de sélectionner l'une des options. Lorsque les utilisateurs cliquent sur Combo, une liste d'options apparaîtra pour les utilisateurs à sélectionner.
Remarque : Tous les éléments de  Combo sont  String, si vous voulez que ces élémentss sont le type de  Object, vous pouvez utiliser  JFace ComboViewer, qui a une classe emballant un  Combo.
Voir plus  JFace ComboViewer:
  • TODO Link!

Styles:

Style     Description
SWT.DROP_DOWN Crée un Combo dont la liste déroulante ("drops down").
SWT.READ_ONLY Combo comprend des éléments disponibles, ne permet pas de taper l'entrée. Seules des Combo a le style étant SWT.DROP_DOWN.
SWT.SIMPLE    Afficher le boîte de saisie (Input Box) et la liste (List) ensemble.
Vous pouvez créer  Combo d'une classe de  String:
// Create a dropdown Combo
Combo combo = new Combo(shell, SWT.DROP_DOWN);

String[] items = new String[] { "English", "Vietnamese" };

combo.setItems(items);
Vous pouvez également ajouter d'autres éléments au  Combo disponible:
// Adds the item to the begin of the receiver's list.
combo.add("Indian",0);

// Adds the item to the end of the receiver's list.
combo.add("Indian");

2- Exemple de Combo

L'exemple ci-dessous crée un  Combo déroulant, peut saisir des valeurs supplémentaires.
ComboDemo.java
package org.o7planning.swt.combo;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
 

public class ComboDemo {

    public static void main(String[] args) {

        Display display = new Display();
        Shell shell = new Shell(display);

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

        Label label = new Label(shell,SWT.NONE );
        
        label.setText("Select language:");
        
        // Create a dropdown Combo
        Combo combo = new Combo(shell, SWT.DROP_DOWN);

        String[] items = new String[] { "English", "Vietnamese" };

        combo.setItems(items);

        shell.setText("SWT Combo (o7planning.org)");
        shell.setSize(400, 200);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }
    
}

Readonly Combo:

// Create a dropdown Combo & Read only
Combo combo = new Combo(shell, SWT.DROP_DOWN | SWT.READ_ONLY);

String[] items = new String[] { "English", "Vietnamese" };

combo.setItems(items)

Simple Combo

// Create a simple Combo
Combo combo = new Combo(shell, SWT.SIMPLE | SWT.READ_ONLY);

String[] items = new String[] { "English", "Vietnamese" };

combo.setItems(items);

3- Gestion des éléments avec Combo

Par exemple, lorsqu'un  Combo affiche une liste de langues, des utilisateurs peuvent saisir plus de nouvelles langues, puis appuyez sur Enter pour l'ajouter à la liste.
ComboEventDemo.java
package org.o7planning.swt.combo;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class ComboEventDemo {

    public static void main(String[] args) {

        Display display = new Display();
        Shell shell = new Shell(display);

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

        // Label
        Label label = new Label(shell, SWT.NONE);

        label.setText("Select language:");

        // Create a dropdown Combo
        Combo combo = new Combo(shell, SWT.DROP_DOWN);

        String[] items = new String[] { "English", "Vietnamese" };

        combo.setItems(items);

        Label labelMessage = new Label(shell, SWT.NONE);

        // User select a item in the Combo.
        combo.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                int idx = combo.getSelectionIndex();
                String language = combo.getItem(idx);
                labelMessage.setText("Select: " + idx + " - " + language);
                labelMessage.pack();
            }
        });

        // User enter new 'language'
        // and press Enter to add new 'language' to the list.
        combo.addKeyListener(new KeyAdapter() {

            @Override
            public void keyPressed(KeyEvent e) {
                // User pressed Enter.
                if (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) {
                    String text = combo.getText();
                    if (text == null || text.length() == 0) {
                        return;
                    }
                    String[] items = combo.getItems();
                    for (String item : items) {
                        if (item.equals(text)) {
                            return;
                        }
                    }
                    combo.add(text);
                }
            }

        });

        shell.setText("SWT Combo (o7planning.org)");
        shell.setSize(400, 200);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }

}