Cодержание
Руководство Java SWT Combo
View more Tutorials:


Combo является распространенным элементом интерфейса. Который позволяет пользователю выбирать один из нескольких вариантов. Когда пользователь нажимает на Combo, список опций выпадает для выбора пользователя.
Примечание: Все элементы в Combo должные быть обьект вида String, если вы хотите, чтобы элементы, были вида Object используйте JFace ComboViewer, это класс, который включает Combo.Смотрите дополнительно JFace ComboViewer:
- TODO Link?
Styles:
Style | Описание |
SWT.DROP_DOWN | Создать Combo с выпадающим списком ("drops down"). |
SWT.READ_ONLY | Combo включает готовые элементы, не позволяет добавить больше. Используется только для Combo с видом SWT.DROP_DOWN. |
SWT.SIMPLE | Отобразить поле ввода (Input Box) и список (List). |

Вы можете создать Combo из списка String:
// Create a dropdown Combo
Combo combo = new Combo(shell, SWT.DROP_DOWN);
String[] items = new String[] { "English", "Vietnamese" };
combo.setItems(items);
Можно также добавлять элементы в готовый Combo:
// 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");
В следующем примере создается выпадающий Combo, можно ввести дополнительные значения.

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);

В примере ниже, Combo отображает список языков, пользователи могут вводить дополнительно новый язык и нажимает Enter, чтобы добавить язык в список.

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();
}
}