2.8 テキスト領域(JTextArea)の使い方

2.8 テキスト領域(JTextArea)の使い方

本節では、テキスト領域(JTextArea)の使い方を見ていきます。
テキストフィールドが1行のテキスト変数領域だったのに対して、テキスト領域は複数行のテキスト編集領域を生成します。

 

1.テキスト領域の設置

テキスト領域の配置から始めましょう。ここでは、前回作成したフレーム及びGUI部品を再利用しており、既にラベル(lblName)とテキストフィールド(textInput)とボタン(btnSayHello)が設置された状態となっています。また、テキストフィールド(textOutput)は削除してあります。詳細は2.7 テキストフィールド(JTextField)の使い方をご参照ください。

2-8-1

「パレット」ウィンドウの「Swingコントロール」タブから「テキスト領域」をクリックし、「JFrame」フォームの上でもう一度クリックして配置します。

2-8-2

なんとなく引き伸ばします。私はよく、ソフトウェアの隙間を埋めるためにテキスト領域を活用します。機能としてはログの出力等に利用することが多いです。

2-8-3

テキスト領域を右クリックして[変数名を変更]を選択します。

2-8-4

「taOutput」としました。出力(Output)の機能を持ったテキスト領域(ta:text area)という意味です。省略が嫌な方は「textAreaOutput」等にしましょう。

 

2.機能の実装

機能を実装していきましょう。ボタン(btnSayHello)をダブクリックするか、ボタンを右クリックして[イベント]->[Action]->[actionPerformed]と進み、ボタンを押した際に実行されるメソッドに移動します。

2-8-5

テキスト領域にも、テキストフィールドと同様に「setText()」メソッドが存在しますが、テキスト領域の中身が一度リセットされてしまいます。テキスト領域とは、どんどんテキストが追加され、情報が積み重なっていくものです。そこで、テキスト領域では「append()」メソッドが利用されます。

//テキスト領域の中身をリセットして、指定のテキストを入れる
[テキスト領域名].setText("入れたいテキスト");
//現在のテキスト領域の最後尾に、新たにテキストを追加する
[テキスト領域名].append("追加したいテキストn")

実際に、テキストフィールドからテキストを取得し、テキスト領域に出力する命令を書きましょう。

        //名前を取得
        String name = textInput.getText();
        //出力
        taOutput.append("こんにちは、" + name + "さん!n");

追加する文字列の最後に書かれている「n」は、「改行」を意味します。「append()」メソッドだけでは改行がされず、ひたすら繋がった文章になってしまうので、見栄えを良くするために「n」を入れて改行させています。このように「」から始まる特殊な機能を持った文字を「エスケープシーケンス」と呼び、色々な種類があるのですが、Javaでは「n」以外はあまり使う機会がありません。

2-8-6

実行してみましょう。「挨拶」ボタンを押すたびに、「こんにちは、○○さん!」と改行されて出力されれば成功です。

2-8-7

これだけではあまりに寂しいので、もう少し機能を持たせてみましょう。上のようにラベルとテキストフィールドを配置して下さい。

2-8-8

ボタンの処理の命令を、次のように書き換えます。

        //名前を取得
        String name = textInput.getText();
        //生まれ年を取得
        int year = Integer.parseInt(textBirthYear.getText());
        //年齢を計算
        int age = 2013 - year;
        taOutput.append("こんにちは、" + age + "歳の" + name + "さん!n");

「getText()」でテキストを取得できると説明しましたが、数字を取得して計算させたい、といったケースも考えられます。その場合は、文字列型変数(テキスト)を整数型変数に変換する、「Integer.parseInt()」メソッドを利用します。

//文字列型変数 s に「1234」というテキストを代入
String s = "1234";
//文字列型変数を整数型変数に変換
int num = Integer.parseInt(s);
//整数型に変換した後は、計算が可能(2倍して出力)
System.out.println("result = " + (num * 2));

生まれ年をテキストフィールドから取得し、整数型変数に変換し、現在の年(2013年)から引くことで、現在の年齢をざっくりと計算することができます。

2-8-9

実行してみましょう。名前を生まれ年を入力して「挨拶」ボタンをすると、「こんにちは、××歳の○○さん!」と若干不愉快な挨拶をしてくれるソフトウェアの完成です。

(2013年11月15日 加納徹)


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)