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()」メソッドが利用されます。

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

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

2-8-6

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

2-8-7

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

2-8-8

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

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

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

2-8-9

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

(2013年11月15日 加納徹)


コメントを残す

メールアドレスが公開されることはありません。

post date*

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