9. TextField / TextArea |
テキストを扱う部品を紹介します。ここでは基本的な使い方のみ紹介します。そのほかのコンストラクタやメソッド、フィールドについては APIドキュメントを参照してください。
(1) 1行分なら TextField です |
TextField tf = new TextField(20);
TextField tf = new TextField("Name");
文字数を指定した場合、「これ以上の文字は入力できない」ということではなく、「だいたいこれぐらいの文字数が入力できる」という領域をつくりますという意味になります。
テキストフィールド内の文字列を獲得したり、文字列を設定したりするメソッドは次の通りです。
String getText( )
テキストフィールド内に入力された文字列を獲得します。
void setText(String label)
テキストフィールドに文字列を設定します。引数を「""」とした場合、テキストフィールド内をクリアします。
この2つのメソッドは TextField クラスのスーパークラスである TextComponent というクラスのメソッドです。TextComponent クラスのサブクラスは今回の TextField、そして TextArea です。ですから、この後で紹介する TextArea クラスでもこのメソッドを使うことができます。
イベントに関する情報は以下の通りです。
イベントの種類 | Enterキーを押したとき ActionEvent 発生 |
イベント処理用メソッド | ActionListener インタフェース内に定義されている void actionPerformed(ActionEvent e) |
リスナ登録用メソッド | void addActionListener(ActionListener obj) |
TFTest.java
// TFTest.java import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class TFTest extends Applet implements ActionListener { Button ok; TextField tf1; TextField tf2; public void init() { // コンポーネント作成 ok = new Button("OK"); tf1 = new TextField("何か入力してOKを押します"); tf2 = new TextField(30); // レイアウト設定 // 後ろの引数2つはコンポーネントの間隔の指定です setLayout(new GridLayout(3,1,10,10)); // コンポーネント追加 add(tf1); add(ok); add(tf2); // リスナ登録 tf1.addActionListener(this); ok.addActionListener(this); } public void actionPerformed(ActionEvent e) { String str = tf1.getText(); tf2.setText(str); tf1.setText(""); } } |
<APPLET CODE=TFTest.class width=200 height=100> </APPLET> |
(2) 複数行の入力は TextArea |
TextArea ta = new TextArea(5,40);
1つ目の引数が「行数」、2つ目の引数が「横方向の文字数(列数)」です。上の例では5行分のテキストエリア(1行は40文字)を作ります。
テキストエリア内の文字列の獲得、設定は TextField の方法と同じです。ただし、テキストエリアに文字を追加してきたい場合には次のメソッドを使います。
void append(String label)
テキストエリアの最後尾に文字列を追加します。
setText( ) ではテキストエリア内の文字列をすべて置き換えてしまうので、順次追加をしていきたい場合には append( ) を使います。
テキストエリアでは Enter キーを押してもイベントは発生しません。Enter キーを押してイベントが発生してしまうと改行の処理がめんどうになってしまいますよね。
TATest.java
// TATest.java import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class TATest extends Applet implements ActionListener { Button ok; TextArea ta; public void init() { // コンポーネント作成 ok = new Button("OK"); ta = new TextArea(5,40); // レイアウト設定 setLayout(new BorderLayout()); // コンポーネント追加 add(ok,"South"); add(ta,"Center"); // リスナ登録 ok.addActionListener(this); } public void actionPerformed(ActionEvent e) { System.out.println( ta.getText() ); } } |
<APPLET CODE=TATest.class width=300 height=200> </APPLET> |