パスワードフィールドの作成と幅の設定

広告

パスワードフィールドを作成するにはJPasswordFieldクラスを使用します。JPasswordFieldクラスは次のように定義されています。

public class JPasswordField
extends JTextField
java.lang.Object
 L java.awt.Component
     L java.awt.Container
         L javax.swing.JComponent
             L javax.swing.text.JTextComponent
                 L javax.swing.JTextField
                     L javax.swing.JPasswordField

パスワードフィールドはテキストフィールドのサブクラスとなっており、一部機能を拡張したものです。その為、多くのメソッドなどはテキストフィールドと同じものが利用できます。

JPasswordFieldクラスのオブジェクトを作成

JPasswordFieldクラスを利用するにはコンストラクタを使ってJPasswordFieldクラスのオブジェクトを作成します。どのようなコンストラクタが用意されているか確認してみます。

コンストラクタの概要
JPasswordField()
新しい JPasswordField を構築します。
JPasswordField(Document doc, String txt, int columns)
指定されたテキストストレージモデルと列数を使用して新規の JPasswordField を構築します。
JPasswordField(int columns)
指定された列数で新規の空の JPasswordField を構築します。
JPasswordField(String text)
指定されたテキストで初期化される新規 JPasswordField を構築します。
JPasswordField(String text, int columns)
指定されたテキストと列で初期化される新規 JPasswordField を構築します。

基本的にJTextFieldクラスの場合と同じです。幅を指定したり初期値を設定することが可能です。ここでは比較的利用される機会が多いと思われる3番目のコンストラクタを確認します。

指定された列数で新規の空の JPasswordField を構築します。デフォルトモデルが作成され、初期文
字列は null に設定されます。

パラメータ:
  columns - 列数 >= 0

引数に列数を指定して下さい。指定した列数を持ち、初期値はnullに設定されたパスワードフィールドが作成されます。

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

JTextField pass = new JTextField(20);

上記の場合、20文字程度が1度に表示される幅をもつパスワードフィールドが作成されます。

サンプルプログラム

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

SSample1_1.java

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

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

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

    JPanel p = new JPanel();

    JPasswordField pass1 = new JPasswordField(20);
    JPasswordField pass2 = new JPasswordField("初期値の設定");

    p.add(pass1);
    p.add(pass2);

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

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

パスワードフィールドの作成

今回は2つのパスワードフィールドを作成しました。

では1つめのパスワードフィールドに適当に何か入力してみて下さい。

パスワードフィールドの作成

このようにパスワードフィールドでは入力された内容を別の文字に置き換えて表示します。入力された内容を他の人に見られたくない場合などに便利です。入力された内容は専用のメソッドを使わなければ取得することはできません。

2番目のパスワードフィールドには初期値が設定されていますが初期値も別の文字に置き換えられて表示されます。

( Written by Tatsuo Ikura )