2.8 テキスト領域(JTextArea)の使い方
本節では、テキスト領域(JTextArea)の使い方を見ていきます。
テキストフィールドが1行のテキスト変数領域だったのに対して、テキスト領域は複数行のテキスト編集領域を生成します。
1.テキスト領域の設置
テキスト領域の配置から始めましょう。ここでは、前回作成したフレーム及びGUI部品を再利用しており、既にラベル(lblName)とテキストフィールド(textInput)とボタン(btnSayHello)が設置された状態となっています。また、テキストフィールド(textOutput)は削除してあります。詳細は2.7 テキストフィールド(JTextField)の使い方をご参照ください。
「パレット」ウィンドウの「Swingコントロール」タブから「テキスト領域」をクリックし、「JFrame」フォームの上でもう一度クリックして配置します。
なんとなく引き伸ばします。私はよく、ソフトウェアの隙間を埋めるためにテキスト領域を活用します。機能としてはログの出力等に利用することが多いです。
テキスト領域を右クリックして[変数名を変更]を選択します。
「taOutput」としました。出力(Output)の機能を持ったテキスト領域(ta:text area)という意味です。省略が嫌な方は「textAreaOutput」等にしましょう。
2.機能の実装
機能を実装していきましょう。ボタン(btnSayHello)をダブクリックするか、ボタンを右クリックして[イベント]->[Action]->[actionPerformed]と進み、ボタンを押した際に実行されるメソッドに移動します。
テキスト領域にも、テキストフィールドと同様に「setText()」メソッドが存在しますが、テキスト領域の中身が一度リセットされてしまいます。テキスト領域とは、どんどんテキストが追加され、情報が積み重なっていくものです。そこで、テキスト領域では「append()」メソッドが利用されます。
1 2 3 4 |
//テキスト領域の中身をリセットして、指定のテキストを入れる [テキスト領域名].setText("入れたいテキスト"); //現在のテキスト領域の最後尾に、新たにテキストを追加する [テキスト領域名].append("追加したいテキストn") |
実際に、テキストフィールドからテキストを取得し、テキスト領域に出力する命令を書きましょう。
1 2 3 4 |
//名前を取得 String name = textInput.getText(); //出力 taOutput.append("こんにちは、" + name + "さん!n"); |
追加する文字列の最後に書かれている「n」は、「改行」を意味します。「append()」メソッドだけでは改行がされず、ひたすら繋がった文章になってしまうので、見栄えを良くするために「n」を入れて改行させています。このように「」から始まる特殊な機能を持った文字を「エスケープシーケンス」と呼び、色々な種類があるのですが、Javaでは「n」以外はあまり使う機会がありません。
実行してみましょう。「挨拶」ボタンを押すたびに、「こんにちは、○○さん!」と改行されて出力されれば成功です。
これだけではあまりに寂しいので、もう少し機能を持たせてみましょう。上のようにラベルとテキストフィールドを配置して下さい。
ボタンの処理の命令を、次のように書き換えます。
1 2 3 4 5 6 7 |
//名前を取得 String name = textInput.getText(); //生まれ年を取得 int year = Integer.parseInt(textBirthYear.getText()); //年齢を計算 int age = 2013 - year; taOutput.append("こんにちは、" + age + "歳の" + name + "さん!n"); |
「getText()」でテキストを取得できると説明しましたが、数字を取得して計算させたい、といったケースも考えられます。その場合は、文字列型変数(テキスト)を整数型変数に変換する、「Integer.parseInt()」メソッドを利用します。
1 2 3 4 5 6 |
//文字列型変数 s に「1234」というテキストを代入 String s = "1234"; //文字列型変数を整数型変数に変換 int num = Integer.parseInt(s); //整数型に変換した後は、計算が可能(2倍して出力) System.out.println("result = " + (num * 2)); |
生まれ年をテキストフィールドから取得し、整数型変数に変換し、現在の年(2013年)から引くことで、現在の年齢をざっくりと計算することができます。
実行してみましょう。名前を生まれ年を入力して「挨拶」ボタンをすると、「こんにちは、××歳の○○さん!」と若干不愉快な挨拶をしてくれるソフトウェアの完成です。
(2013年11月15日 加納徹)