Hướng dẫn sử dụng Java SWT Text
Công ty Vĩnh Cửu tuyển dụng lập trình viên Java

1- SWT Text

Class Text thực hiện một điều khiển giao diện người dùng chấp nhận và hiển thị đầu vào văn bản. Nó cung cấp khả năng tiếp nhận đầu vào văn bản từ một người sử dụng.
Class Text có thể sử dụng để tạo ra một đầu vào Text, cho phép người dùng nhập trên một dòng. Nó cũng có thể tạo ra một đầu vào text cho phép nhập trên nhiều dòng, hoặc tạo ra một trường mật khẩu (Password field).
Xem thêm trường mật khẩu (Password Field) trong SWT:
// Style ....
int style = SWT.BORDER;
int style = SWT.BORDER | SWT.PASSWORD;

Text text = new Text(parent, style);
Các Style có thể được áp dụng cho Text:
Style Mô tả
SWT.BORDER Hiển thị viền (border).
SWT.MULTI Cho phép nhập nội dung trên nhiều dòng
SWT.PASSWORD Cho phép người dùng nhập mật khẩu.
SWT.V_SCROLL Hiển thị thanh cuộn thẳng đứng, thường sử dụng với SWT.MULTI
SWT.H_SCROLL Hiển thị thanh cuộn nằm ngang, thường sử dụng với SWT.MULTI
SWT.WRAP Tự động cuộn (wrap) xuống dòng nếu đoạn văn bản quá dài.
SWT.READ_ONLY Không cho phép hiệu chỉnh, nó tương đương với gọi phương thức text.setEditable(false);
SWT.LEFT Căn lề trái cho text
SWT.RIGHT Căn lề phải cho text
SWT.CENTER Căn lề giữa cho text
Xem một vài phương thức hữu ích bạn có thể sử dụng với Text.
 
text.setEnabled(enabled);

text.setFont(font);

text.setForeground(color);

text.setEditable(editable);

text.setTextLimit(limit);

text.setToolTipText(string);

text.setTextDirection(textDirection);

text.addSegmentListener(listener);

2- Ví dụ với SWT Text

TextDemo.java
package org.o7planning.swt.text;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class TextDemo {

    public static void main(String[] args) {

        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setText("SWT Text (o7planning.org)");

        RowLayout rowLayout = new RowLayout();
        rowLayout.marginLeft = 10;
        rowLayout.marginTop = 10;
        rowLayout.spacing = 15;
        shell.setLayout(rowLayout);

        // Label
        Label label = new Label(shell, SWT.NONE);
        label.setText("Your Name: ");

        // Text
        Text text = new Text(shell, SWT.BORDER);
        RowData layoutData = new RowData();
        layoutData.width = 150;

        text.setLayoutData(layoutData);
        text.setText("Tran");

        shell.setSize(400, 200);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }

}

3- SWT Text và Styles

Ví dụ dưới đây tạo các SWT Text khác nhau với các style SWT.BORDER, SWT.PASSWORD, SWT.MULTI, SWT.WRAP, SWT.READ_ONLY, ...
TextStylesDemo.java
package org.o7planning.swt.text;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class TextStylesDemo {

   public static void main(String[] args) {

       Display display = new Display();
       Shell shell = new Shell(display);
       shell.setText("SWT Text (o7planning.org)");

       RowLayout rowLayout = new RowLayout(SWT.VERTICAL);
       rowLayout.marginLeft = 10;
       rowLayout.marginTop = 10;
       rowLayout.spacing = 15;
       shell.setLayout(rowLayout);
 
       // Text không có viền (border)
       Text text1 = new Text(shell, SWT.NONE);
       text1.setText("SWT.NONE");
       text1.setLayoutData(new RowData(150, SWT.DEFAULT));
 
       // Text có viền (border)
       Text text2 = new Text(shell, SWT.BORDER);
       text2.setText("SWT.BORDER");
       text2.setLayoutData(new RowData(150, SWT.DEFAULT));

 
       // Text có viền và không cho phép sửa.
       Text text3 = new Text(shell, SWT.BORDER | SWT.READ_ONLY);
       text3.setText("SWT.BORDER | SWT.READ_ONLY");
       text3.setLayoutData(new RowData(200, SWT.DEFAULT));

       // Password field.
       Text text4 = new Text(shell, SWT.BORDER | SWT.PASSWORD);
       text4.setText("12345");
       text4.setLayoutData(new RowData(150, SWT.DEFAULT));
 
       // Text cho phép nhiều dòng và thanh cuộn thẳng đứng.
       Text text5 = new Text(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
       text5.setText("SWT.BORDER | SWT.MULTI | SWT.V_SCROLL \n\n Hello World");

       text5.setLayoutData(new RowData(250, 80));  
       

       // Wrap
       Text text6 = new Text(shell, SWT.BORDER | SWT.WRAP);
       text6.setLayoutData(new RowData(120, 80));
       text6.setText("SWT.BORDER | SWT.WRAP, This is a text, it very long, and need to warp it");


       shell.setSize(400, 400);
       shell.open();
       while (!shell.isDisposed()) {
           if (!display.readAndDispatch())
               display.sleep();
       }
       display.dispose();
   }

}

4- Các phương thức hữu ích

Ví dụ dưới đây minh họa sử dụng các phương thức clear(), copy(), paste(), cut(), chúng là các phương thức hữu ích của TextField.
TextDemo2.java
package org.o7planning.swt.text;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class TextDemo2 {

    public static void main(String[] args) {

        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setText("SWT Text (o7planning.org)");

        RowLayout rowLayout = new RowLayout();
        rowLayout.marginLeft = 10;
        rowLayout.marginTop = 10;
        rowLayout.spacing = 5;
        shell.setLayout(rowLayout);

        // Text
        Text text = new Text(shell, SWT.BORDER);

        text.setLayoutData(new RowData(150, SWT.DEFAULT));
        text.setText("This is a Text");

        // Clear Button
        Button clearButton = new Button(shell, SWT.PUSH);
        clearButton.setText("Clear");

        // Copy Button
        Button copyButton = new Button(shell, SWT.PUSH);
        copyButton.setText("Copy");

        // Cut Button
        Button cutButton = new Button(shell, SWT.PUSH);
        cutButton.setText("Cut");

        // Paste Button
        Button pasteButton = new Button(shell, SWT.PUSH);
        pasteButton.setText("Paste");

        clearButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                text.setText("");
                text.forceFocus();
            }
        });

        copyButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                text.copy();
                text.forceFocus();
            }
        });

        cutButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                text.cut();
                text.forceFocus();
            }
        });

        pasteButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                text.paste();
                text.forceFocus();
            }
        });

        shell.setSize(400, 200);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
        display.dispose();
    }

}