Swingを利用してウィンドウの表示ボタンやラベルの配置が出来たので、次にテキスト入力ができるGUIアプリケーションを作成する。

Swingで利用できるテキスト入力用コンポーネントには、以下のものが存在する。

  • 1行分の入力ができる「JTextField」
  • 複数行の入力ができる「JTextArea」

 

プロジェクトの作成

プロジェクト名「SwingSample03」を作成する。

1.[ファイル]⇒[新規]⇒[プロジェクト]を選択

2.[Javaプロジェクト]を選択し[次へ]をクリック

3.プロジェクト名等を入力し[完了]をクリック

  • プロジェクト名に「SwingSample03」を入力
  • プロジェクト・レイアウトで[プロジェクト・フォルダーを・・・]を選択

 

クラスの作成

GUIアプリケーションの起動および各コンポーネントの作成を行う「SwingAppMain」クラスを作成する。

1.[ファイル]⇒[新規]⇒[クラス]を選択

2.[新規Javaクラス]ダイアログで各項目を入力し[完了]をクリック

  • パッケージに「swing.sample」を入力
  • 名前に「SwingAppMain」を入力
  • public static void main(String[] args)をチェック

3.作成したクラスに以下のクラスをインポート

  • javax.swing.JButton
  • javax.swing.JFrame
  • javax.swing.JScrollPane
  • javax.swing.JTextArea
  • javax.swing.JTextField
  • java.awt.BorderLayout
  • java.awt.Container

4.mainメソッド内で「JFrame」クラスのインスタンス(mainFrame)を生成し初期設定を行いテキストフィールド、テキストエリアを配置

以下の項目の実装

  • JFrameクラスのインスタンスを生成
  • 閉じるボタン押下時のアプリケーションの振る舞いを決定
  • ウィンドウの初期サイズ(幅、高さ)をピクセル単位で設定
  • ウィンドウの表示場所を規定(画面の中央に表示)
  • mainFrameのContentPaneを取得(contentPane)
  • 「JTextField」クラスのインスタンス(textField)を生成
  • 「JTextArea」クラスのインスタンス(textArea)を生成
  • 「JScrollPane」クラスのインスタンス(scrollPane)を生成し、textAreaを追加
  • 「JButton」クラスのインスタンス(button)を生成
  • アクションの定義
  • contentPaneにtextField、textArea、buttonを追加
  • ウィンドウの表示

5.[実行]→[Javaアプリケーション]を選択して、実行する

実行した結果、テキスト入力用コンポーネントが配置されたウィンドウが開く。

上段のテキストフィールドに値を入力し、「追加」ボタンをクリックするとテキストフィールドの値が下段のテキストエリアに追加される。

 

JScrollPane
JScrollPaneは、自身に追加されたコンポーネントに対して、スクロール処理を提供する。
サンプルでは、下段のテキストエリアに対して改行を数回入力すると、スクロールバーが現れる。

JScrollPaneの生成

このコードでは、コンストラクタでJScrollPaneに追加するコンポーネントを指定している。
上記の場合は、textAreaが追加するコンポーネント。
textArea内の行数が増えたり、行内の文字数が増えたりしてスクロールする必要が生じると、スクロールバーが表示される。

 

テキストフィールドの値の取得と設定

テキスト入力用コンポーネントからの値の取得

getText()はJTextFieldとJTextAreaの親クラスであるJTextComponentクラスで提供されているメソッドで、テキスト入力用コンポーネント内のテキスト全体を取得する。
このほかにも、オフセットと読取長を指定したgetText(int, int)や、選択されている部分のみを取得するgetSelectedText()がある。

テキスト入力用コンポーネントへの値の設定

setText(String)はJTextFieldとJTextAreaの親クラスであるJTextComponentクラスで提供されているメソッドで、テキスト入力用コンポーネントにパラメータで指定した文字列が設定される。
Append(String)はJTextAreaクラスで提供されているメソッドで、パラメータをテキストの末尾に追加する。

 

アクションの定義
「クラスの作成」で作成したウィンドウでは、テキスト入力用コンポーネントから値を取得したり、値を設定したりすることはできない。
そこで、以下のようなコードが必要になる。

クラスのインポート
java.awt.event.ActionEvent
javax.swing.AbstractAction

ここでは、次のようなことを行っている。

  • textFieldから文字列を取得(textField.getText())
  • 取得した文字列に改行コードを加え、textAreaに追加