パスワードフィールドで使用するエコー文字を設定する

パスワードフィールドに入力された値は、どんな文字が入力されたか分からないように別の文字に置き換えて表示されます。この入力された文字の代わりに表示される文字をエコー文字といいますが、エコー文字はデフォルトの文字から任意の文字に変更することができます。ここではパスワードフィールドで使用されるエコー文字を設定する方法について解説します。

(2022 年 04 月 11 日公開 / 2022 年 04 月 11 日更新)

エコー文字を設定する

エコー文字として使われる文字を設定するには JPasswordField クラスで定義されている setEchoChar メソッドを使います。

public void setEchoChar(char c)

JPasswordFieldのエコー文字を設定します。 インストールされるビューは任意のグラフィック手法を使用してフィールドを表示できるため、これは提案にすぎません。 値0に設定すると、標準のJTextFieldの動作と同様に、テキストが入力したとおりに表示されます。

パラメータ:
c - 表示するエコー文字

引数にエコー文字として設定したい文字を char 型の値として設定します。

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

JPasswordField pass = new JPasswordField();
pass.setEchoChar('*');

なお引数に (char)0 を指定すると、入力された文字がそのまま表示されます。

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample3_1.java という名前で保存します。

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

class JSample3_1 extends JFrame{
  public static void main(String args[]){
    JSample3_1 frame = new JSample3_1("MyTitle");
    frame.setVisible(true);
  }

  JSample3_1(String title){
    setTitle(title);
    setBounds(100, 100, 600, 400);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPasswordField pass1 = new JPasswordField(30);
    JPasswordField pass2 = new JPasswordField(30);
    pass2.setEchoChar('#');
    JPasswordField pass3 = new JPasswordField(30);
    pass3.setEchoChar((char)0);

    JPanel p = new JPanel();
    p.add(pass1);
    p.add(pass2);
    p.add(pass3);

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

次のようにコンパイルを行います。

javac JSample3_1.java

エコー文字を設定する(1)

コンパイルが終わりましたら実行します。

java JSample3_1

パスワードフィールドを 3 つ追加しました。 1 つ目はデフォルトのエコー文字のままですが 2 つ目はエコー文字として '#' を設定しています。 3 つ目はエコー文字として 0 を設定しているので入力した文字がそのまま表示されます。

エコー文字を設定する(2)

エコー文字を設定する(3)

-- --

パスワードフィールドで使用されるエコー文字を設定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。