Hướng dẫn và ví dụ Java SWT Combo
1. SWT Combo
Combo là một thành phần giao diện thông dụng. Nó cho phép người dùng chọn một trong nhiều lựa chọn. Khi người dùng click vào Combo, một danh sách các lựa chọn sẽ sổ xuống cho người dùng lựa chọn.
Chú ý: Tất cả các phần tử trong Combo phải là đối tượng kiểu String, nếu bạn muốn các phần tử là kiểu Object hãy sử dụng JFace ComboViewer, nó là một class bao lấy một Combo.Xem thêm JFace ComboViewer:
- Hướng dẫn và ví dụ JFace ComboViewer
Styles:
Style | Mô tả |
SWT.DROP_DOWN | Tạo một Combo với danh sách sổ xuống ("drops down"). |
SWT.READ_ONLY | Combo chỉ bao gồm các phần tử có sẵn, không cho phép nhập thêm. Chỉ dùng cho các Combo có style là SWT.DROP_DOWN. |
SWT.SIMPLE | Hiển thị hộp đầu vào (Input Box) và một danh sách (List). |
Bạn có thể tạo Combo từ một danh sách các String:
// Tạo một Combo sổ xuống.
Combo combo = new Combo(shell, SWT.DROP_DOWN);
String[] items = new String[] { "English", "Vietnamese" };
combo.setItems(items);
Bạn cũng có thể thêm các phần tử vào Combo có sẵn:
// Thêm một phần tử (item) vào vị trí đầu tiên.
combo.add("Indian",0);
// Thêm một phần tử vào cuối danh sách của combo.
combo.add("Indian");
2. Ví dụ Combo
Ví dụ dưới đây tạo một Combo sổ xuống, có thể nhập thêm giá trị.
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:");
// Tạo một Combo sổ xuống.
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:
// Tạo một Combo sổ xuống & Read only
Combo combo = new Combo(shell, SWT.DROP_DOWN | SWT.READ_ONLY);
String[] items = new String[] { "English", "Vietnamese" };
combo.setItems(items)
Simple Combo
// Tạo một đơn giản Combo.
Combo combo = new Combo(shell, SWT.SIMPLE | SWT.READ_ONLY);
String[] items = new String[] { "English", "Vietnamese" };
combo.setItems(items);
3. Xử lý sự kiện với Combo
Ví dụ dưới đây, một Combo hiển thị danh sách các ngôn ngữ, người dùng có thể nhập thêm ngôn ngữ mới và nhấn Enter để thêm ngôn ngữ vào danh sách.
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
// Tạo một Combo sổ xuống.
Combo combo = new Combo(shell, SWT.DROP_DOWN);
String[] items = new String[] { "English", "Vietnamese" };
combo.setItems(items);
Label labelMessage = new Label(shell, SWT.NONE);
// Người dùng lựa chọn một Item trên 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();
}
});
// Người dùng nhập 'ngôn ngữ' mới
// và nhấn Enter để thêm 'ngôn ngữ' vào danh sách.
combo.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// Người dùng nhấn nút 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();
}
}
Các hướng dẫn lập trình Java SWT
- Hướng dẫn và ví dụ Java SWT FillLayout
- Hướng dẫn và ví dụ Java SWT RowLayout
- Hướng dẫn và ví dụ Java SWT SashForm
- Hướng dẫn và ví dụ Java SWT Label
- Hướng dẫn và ví dụ Java SWT Button
- Hướng dẫn và ví dụ Java SWT Toggle Button
- Hướng dẫn và ví dụ Java SWT Radio Button
- Hướng dẫn và ví dụ Java SWT Text
- Hướng dẫn và ví dụ Java SWT Password Field
- Hướng dẫn và ví dụ Java SWT Link
- Lập trình ứng dụng Java Desktop sử dụng SWT
- Hướng dẫn và ví dụ Java SWT Combo
- Hướng dẫn và ví dụ Java SWT Spinner
- Hướng dẫn và ví dụ Java SWT Slider
- Hướng dẫn và ví dụ Java SWT Scale
- Hướng dẫn và ví dụ Java SWT ProgressBar
- Hướng dẫn và ví dụ Java SWT TabFolder và CTabFolder
- Hướng dẫn và ví dụ Java SWT List
Show More