codestory

Die Anleitung zu Java SWT Combo

  1. SWT Combo
  2. Zum Beispiel Combo
  3. Die Handhabung des Events durch Combo

1. SWT Combo

Combo ist ein üblicher Schnittstelle Komponent,damit kann der Benutzer eine der vielen Options wählen. Wenn der Benutzer die Combo klicken, wird eine Liste von der Options gefallen damit der Benutzer wählen kann
Beachten Sie: Alle die Elemente in Combo müssen die String Type sein. Wenn Sie möchten, die Elemente sind die Object Type, sollen Sie die JFace ComboViewer benutzen. Es ist die Class, die ein Combo einpackt
Studieren Sie mehr JFace ComboViewer:
  • Hướng dẫn sử dụng JFace ComboViewer
Styles:
Style
Die Bezeichnung
SWT.DROP_DOWN
Ein Combo mit einer Aufklappsliste ("drops down").
SWT.READ_ONLY
Combo umfasst nur die vorhandenen Elemente, darf mehr die Element nicht einfügen. Für die Combo mit Style von SWT.DROP_DOWN benutzen
SWT.SIMPLE
Das Input Box mit einer Liste anzeigen
Sie können die Combo aus einer Liste von String erstellen
// Create a dropdown Combo
Combo combo = new Combo(shell, SWT.DROP_DOWN);

String[] items = new String[] { "English", "Vietnamese" }; 
combo.setItems(items);
Sie können auch die Elemente in einer vorhandenen Combo ergänzen
// 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. Zum Beispiel Combo

Das folgende Beispiel stellt die Erstellung einer gefallenen Combo dar und kann die Elemente ergänzen
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. Die Handhabung des Events durch Combo

Das folgende Beispiel: Eine Combo zeigt eine Liste der Sprache. Der Benutzer kann die neue Sprache eingeben und drückt Enter um die Sprache in die Liste einzufügen
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();
    }
}