Руководство Java SWT Combo
1. SWT Combo
Combo является распространенным элементом интерфейса. Который позволяет пользователю выбирать один из нескольких вариантов. Когда пользователь нажимает на Combo, список опций выпадает для выбора пользователя.
Примечание: Все элементы в Combo должные быть обьект вида String, если вы хотите, чтобы элементы, были вида Object используйте JFace ComboViewer, это класс, который включает Combo.Смотрите дополнительно JFace ComboViewer:
- Hướng dẫn sử dụng JFace ComboViewer
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");
2. Пример Combo
В следующем примере создается выпадающий 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);
3. Обработка событий с Combo
В примере ниже, 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();
}
}
Руководства Java SWT
- Руководство Java SWT FillLayout
- Руководство Java SWT RowLayout
- Руководство Java SWT SashForm
- Руководство Java SWT Label
- Руководство Java SWT Button
- Руководство Java SWT Toggle Button
- Руководство Java SWT Radio Button
- Руководство Java SWT Text
- Руководство Java SWT Password Field
- Руководство Java SWT Link
- Программирование приложения Java Desktop с использованием SWT
- Руководство Java SWT Combo
- Руководство Java SWT Spinner
- Руководство Java SWT Slider
- Руководство Java SWT Scale
- Руководство Java SWT ProgressBar
- Руководство Java SWT TabFolder и CTabFolder
- Руководство Java SWT List
Show More