openplanning

Hướng dẫn và ví dụ Java SWT Combo

Xem thêm các chuyên mục:

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

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:
  • TODO Link?
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();
   }
}

Xem thêm các chuyên mục: