Java Tutorial/SWT/Combo Event

Материал из Java эксперт
Перейти к: навигация, поиск

Add selection listener to Combo

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.rubo;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class ComboSelectionListener {
  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new RowLayout());
    Combo combo = new Combo(shell, SWT.NONE);
    combo.setItems(new String[] { "Press enter to select", "B-1", "C-1" });
    combo.addSelectionListener(new SelectionAdapter() {
      public void widgetDefaultSelected(SelectionEvent e) {
        System.out.println("Combo");
      }
    });
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}





Add TraverseListener to Combo

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.rubo;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class ComboTraverseListener {
  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new RowLayout());
    Text text = new Text(shell, SWT.SINGLE|SWT.BORDER);
    text.setText("Press TAB");
    
    Combo combo = new Combo(shell, SWT.NONE);
    combo.setItems(new String[] { "Press enter to select", "B-1", "C-1" });
    combo.addTraverseListener(new TraverseListener() {
      public void keyTraversed(TraverseEvent e) {
        System.out.println("keyTraversed");
      }
    });
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}





Combo default selection event (Return/Enter key)

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.rubo;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class ComboDefaultSelection {
  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new RowLayout());
    Combo combo = new Combo(shell, SWT.NONE);
    combo.setItems(new String[] { "A-1", "B-1", "C-1" });
    Text text = new Text(shell, SWT.SINGLE | SWT.BORDER);
    text.setText("some text");
    combo.addListener(SWT.DefaultSelection, new Listener() {
      public void handleEvent(Event e) {
        System.out.println(e.widget + " - Default Selection");
      }
    });
    text.addListener(SWT.DefaultSelection, new Listener() {
      public void handleEvent(Event e) {
        System.out.println(e.widget + " - Default Selection");
      }
    });
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}





Disable Tab key to transfer focus for Combo

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.rubo;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class ComboTransferFocus {
  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new RowLayout());
    Text text = new Text(shell, SWT.SINGLE|SWT.BORDER);
    text.setText("Press TAB");
    
    Combo combo = new Combo(shell, SWT.NONE);
    combo.setItems(new String[] { "Press enter to select", "B-1", "C-1" });
    combo.addTraverseListener(new TraverseListener() {
      public void keyTraversed(TraverseEvent e) {
        if (e.detail == SWT.TRAVERSE_TAB_NEXT) {
          e.doit = false;
          e.detail = SWT.TRAVERSE_NONE;
        }
      }
    });
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}





To track the user"s selection (DefaultSelection)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.rubo;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class ComboSelectionEvent {
  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    String[] ITEMS = { "A", "B", "C", "D" };
    final Combo combo = new Combo(shell, SWT.DROP_DOWN);
    combo.setItems(ITEMS);
    combo.addSelectionListener(new SelectionListener() {
      public void widgetSelected(SelectionEvent e) {
        System.out.println("Selected index: " + combo.getSelectionIndex() + ", selected item: "
            + combo.getItem(combo.getSelectionIndex()) + ", text content in the text field: "
            + combo.getText());
      }
      public void widgetDefaultSelected(SelectionEvent e) {
        System.out.println("Default selected index: "
            + combo.getSelectionIndex()
            + ", selected item: "
            + (combo.getSelectionIndex() == -1 ? "<null>" : combo
                .getItem(combo.getSelectionIndex())) + ", text content in the text field: "
            + combo.getText());
      }
    });
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }
}



  1. The widgetSelected method of the selection listener is called when the combo"s list selection changes.
  2. The widgetDefaultSelected method is typically called when the user presses the Enter key in the combo"s text field.