Java Tutorial/SWT/Combo Event
Содержание
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();
}
}
- The widgetSelected method of the selection listener is called when the combo"s list selection changes.
- The widgetDefaultSelected method is typically called when the user presses the Enter key in the combo"s text field.