テキスト
2003.04.13 update.

文字列の入力を行うフィールドです。
1行の文字列を入力させたい場合や、複数行のテキストエリアを提供したい場合に使用します。
文字色や背景色の指定・フォントの指定は、「ラベル」のページの「setForeground」「setBackground」「setFont」 をご参照ください。


import org.eclipse.swt.widgets.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.events.*;

public class swtTest {

  public static void main(String argv[]){

    Display display = new Display();
    Shell shell = new Shell(display);
		
    //ウィンドウのタイトルを指定
    shell.setText("swtTest");

    //テキストを配置する
    Text text = new Text(shell,SWT.SINGLE | SWT.BORDER);
    text.setText("入力テキスト");
    text.setTextLimit(16);
    text.setBounds(20,20,120,20);

    shell.setBounds(100,100,200,200);

    //イベントループ
    shell.open();
    while (!shell.isDisposed()){
      if (!display.readAndDispatch()){
        display.sleep();
      }
    }

    //破棄処理
    display.dispose();
  }
}




この場合、「Text」のコンストラクタの第二引数にて「SWT.SINGLE | SWT.BORDER」を指定して、 1行のテキスト・枠ありのテキストフィールドを作成します。
「setTextLimit」で、入力できる文字数を指定しています。
「setBounds」で、表示位置と表示サイズを指定しています。

テキストの種類

複数行のテキスト

Text text = new Text(shell,SWT.MULTI | SWT.BORDER | 
    SWT.H_SCROLL | SWT.V_SCROLL);
text.setText("入力テキスト2");
text.setTextLimit(32);
text.setBounds(20,10,120,40);





水平・垂直スクロールバーを「SWT.H_SCROLL | SWT.V_SCROLL」にて指定しています。

書き込み不可の指定

Text text = new Text(shell,SWT.MULTI | SWT.BORDER | 
    SWT.H_SCROLL | SWT.V_SCROLL);
text.setText("入力テキスト2");
text.setTextLimit(32);
text.setEditable(false);
text.setBounds(20,10,120,40);





「setEnable(false)」の指定で、書き込み不可のテキストフィールドを指定します。

折り返しの指定

Text text = new Text(shell,SWT.MULTI | SWT.BORDER | 
    SWT.V_SCROLL | SWT.WRAP);
text.setText("入力テキスト2");
text.setTextLimit(32);
text.setBounds(20,10,120,40);





Textのコンストラクタにて「SWT.WRAP」を指定すると、 長い文字列を入力する場合に折り返されます。
「SWT.H_SCROLL」(水平スクロールバーの表示)は無効になります。
また、「SWT.MULTI」(複数行)の場合でないと指定はできません。

テキスト選択

テキストを選択する

text.setSelection(2,4);


「setSelection」により、テキストのうち指定範囲を選択します。
「setSelection(2,4)」では、2文字目から4-1文字目までを選択しています。 (一番先頭を0としています)
全角文字の場合でも、1文字として扱われます。
また、改行も1文字として扱われます。




テキストをすべて選択する

text.selectAll();


「selectAll」により、テキストすべてを選択します。




情報取得

行数の取得

int cou;
cou = text.getLineCount();



選択されているテキストの選択開始位置を取得

int pos;
pos = text.getCaretPosition();


一番先頭の文字位置が0となります。

選択されているテキストの文字数を取得

int cou;
cou = text.getSelectionCount();



選択されているテキストを取得

String str;
str = text.getSelectionText();