初期値の設定

広告

テキストフィールドはユーザーが文字を入力してもらうために使用しますが、入力される値の初期値を設定しておくことが可能です。ここでは初期値の設定方法を確認します。

コンストラクタで指定

JTextFieldクラスのコンストラクタの中には初期値を設定できるコンストラクタが用意されています。

指定されたテキストで初期化される新しい TextField を構築します。デフォルトモデルが作成され、
列数は 0 です。

パラメータ:
  text - 表示されるテキストまたは null

引数には文字列を表すStringクラスのオブジェクトを指定します。

このコンストラクタを使用した場合、作成したテキストフィールドには引数に指定した文字列が初期値として表示されます。またテキストフィールドの幅は、初期値として指定した文字列がぴったり表示されるサイズに自動的に設定されます。

次のように初期値に加えて幅を指定するコンストラクタも用意されています。

指定されたテキストおよび列で初期化される新規 TextField を構築します。デフォルトモデルが作成
されます。 

パラメータ:
  text - 表示されるテキストまたは null
  columns - 適切な幅の計算に使用する列数。 列数を 0 に設定すると、適切な幅はコンポーネント
    の実装から自然に得られる値になる

1番目の引数には文字列を表すStringクラスのオブジェクトを指定します。2番目の引数には列数を指定します。列数とはピクセル単位ではなく文字数と考えて下さい。

このコンストラクタを使用した場合、作成したテキストフィールドには引数に指定した文字列が初期値として表示されます。またテキストフィールドの幅も引数に設定した値に設定されます。

実際の使い方は次のようになります。

JTextField text1 = new JTextField("初期値");
JTextField text2 = new JTextField("初期値", 10);

メソッドを使って設定する

テキストフィールドを作成した後でテキストフィールドに表示される値を設定することが出来ます。JTextFieldクラスの親クラスであるJTextComponentクラスで用意されているsetTextメソッドを使います。

この TextComponent のテキストに、指定されたテキストを設定します。テキストが null または空の
場合は、古いテキストを単に削除する効果があります。テキストが挿入されたときに結果として得ら
れるキャレット位置は、キャレットクラスの実装によって決定されます。 

パラメータ:
  t - 設定する新しいテキスト

引数にはテキストフィールドに設定する文字列を表すStringクラスのオブジェクトを指定します。setTextメソッドは任意のタイミングで実行できますので、初期値を設定するというよりはテキストフィールドの値を設定するためのメソッドです。

またこのメソッドはテキストフィールドの文字列を設定するだけのため、このメソッドが呼ばれることによってテキストフィールドの幅が変更されることはありません。

実際の使い方は次のようになります。

JTextField text = new JTextField();
text.setText("文字列");

サンプルプログラム

では実際に試してみます。

SSample2_1.java

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.Container;
import java.awt.BorderLayout;

class SSample2_1 extends JFrame{
  public static void main(String args[]){
    SSample2_1 frame = new SSample2_1("タイトル");
    frame.setVisible(true);
  }

  SSample2_1(String title){
    setTitle(title);
    setBounds(100, 100, 300, 250);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel p = new JPanel();

    JTextField text1 = new JTextField("東京都");
    JTextField text2 = new JTextField("東京都", 10);
    JTextField text3 = new JTextField(15);
    text3.setText("住所を入力して下さい");

    p.add(text1);
    p.add(text2);
    p.add(text3);

    Container contentPane = getContentPane();
    contentPane.add(p, BorderLayout.CENTER);
  }
}

ではコンパイルを行った上で実行してみます。

初期値の設定

今回は3つのテキストフィールドを作成しました。1つ目のテキストフィールドは初期値の文字列と同じ幅に設定されています。2つ目のテキストフィールドでは初期値に加えて幅を設定しました。3つ目のテキストフィールドは作成された後に文字列が設定されていますのでテキストフィールドの幅などは文字列が設定される前の状態のままです。

初期値はあくまで初期値ですので後から文字列を追加したり削除して書き換えたりすることが可能です。

初期値の設定

( Written by Tatsuo Ikura )