devstory

Le Tutoriel de Java SWT Text

  1. SWT Text
  2. Exemple avec SWT Text
  3. SWT Text et des Styles
  4. Des méthodes utiles

1. SWT Text

La classe Text est un control qui accepte et affiche l'entrée du texte. Elle fournit des possibilités de récupérer la saisie du texte du utilisateur.
La classe Text permet de créer une saisie de texte qui permet aux utilisateurs de saisir sur une seule ligne. Il peut également créer une saisie de texte pour entrer sur plusieurs lignes ou pour créer un champ du mot de passe (Password field).
Voyez plus sur le champ du mot de passe (Password Field) dans SWT:
// Style ....
int style = SWT.BORDER;
int style = SWT.BORDER | SWT.PASSWORD;

Text text = new Text(parent, style);
Les styles (Style) peuvent être appliqués au Text:
Style
Description
SWT.BORDER
Créer un texte avec une bordure (border).
SWT.MULTI
Autoriser de saisir le contenu sur plusieurs lignes.
SWT.PASSWORD
Pour afficher le Texte comme le champ du mot de passe.
SWT.V_SCROLL
Afficher la barre de défilement verticale, habituellement utilisée avec SWT.MULTI.
SWT.H_SCROLL
Afficher la barre de défilement horizontale, habituellement utilisée avec SWT.MULTI.
SWT.WRAP
Enroulez (wrap) automatiquement si le texte est trop long.
SWT.READ_ONLY
Ne pas autoriser l'édition, il est équivalent d'appeler la méthode text.setEditable(false);
SWT.LEFT
Alignement du texte à gauche
SWT.RIGHT
Aligner du texte à droite
SWT.CENTER
Aligner du texte au centre
Examinez quelques méthodes utiles que vous pouvez utiliser avec les champs de 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. Exemple avec 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 et des Styles

L'exemple ci-dessous illustre la création de différent SWT Text avec des styles tels que 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 without border
        Text text1 = new Text(shell, SWT.NONE);
        text1.setText("SWT.NONE");
        text1.setLayoutData(new RowData(150, SWT.DEFAULT));

        // Text with border
        Text text2 = new Text(shell, SWT.BORDER);
        text2.setText("SWT.BORDER");
        text2.setLayoutData(new RowData(150, SWT.DEFAULT));

        // Text with border and readonly.
        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 with multi lines and show vertiacal scroll.
        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. Des méthodes utiles

L'exemple ci-dessous illustre l'utilisation des méthodes telles que clear(),copy(), paste(), cut(), qui sont les méthodes utiles du 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();
    }
}