9 パスワード・フィールド
この章では、別のタイプのテキスト・コントロールであるパスワード・フィールドについて学習します。
PasswordField
クラスは特殊なテキスト・フィールドを実装します。ユーザーが入力した文字はエコー文字列を表示することによって隠されます。図9-1に、パスワードを入力したパスワード・フィールドを示します。
パスワード・フィールドの作成
エントリ・レベルのタスクでは、例9-1のコードを使用してパスワード・フィールドを作成します。
例9-1 パスワード・フィールドの作成
PasswordField passwordField = new PasswordField(); passwordField.setPromptText("Your password");
ユーザー・インタフェースでは、パスワード・フィールドにプロンプト・メッセージを関連付けるか、または通知ラベルを追加できます。TextField
クラスと同様に、PasswordField
クラスはsetText
メソッドを提供し、アプリケーションを開始したときにテキスト文字列を表示します。ただし、setText
メソッドで指定した文字列は、パスワード・フィールドのエコー文字によって隠されます。デフォルトでは、エコー文字はドットです。図9-2は、事前定義されているテキストのあるパスワード・フィールドを示しています。
パスワード・フィールドに入力された値は、getText
メソッドを介して取得できます。アプリケーション内でこの値を処理し、適切な認証ロジックを設定します。
パスワードの評価
例9-2でユーザー・インタフェースに適用できるパスワード・フィールドの実装について、詳しく確認します。
例9-2 認証ロジックの実装
final Label message = new Label(""); VBox vb = new VBox(); vb.setPadding(new Insets(10, 0, 0, 10)); vb.setSpacing(10); HBox hb = new HBox(); hb.setSpacing(10); hb.setAlignment(Pos.CENTER_LEFT); Label label = new Label("Password"); final PasswordField pb = new PasswordField(); pb.setOnAction((ActionEvent e) -> { if (!pb.getText().equals("T2f$Ay!")) { message.setText("Your password is incorrect!"); message.setTextFill(Color.rgb(210, 39, 30)); } else { message.setText("Your password has been confirmed"); message.setTextFill(Color.rgb(21, 117, 84)); } pb.clear(); }); hb.getChildren().addAll(label, pb); vb.getChildren().addAll(hb, message);
パスワード・フィールドの認証ロジックは、setOnAction
メソッドを使用して定義されます。このメソッドは、パスワードのコミットするときにコールされ、入力した値を処理します。入力した値が要求されているパスワードと異なる場合、図9-3に示すように該当するメッセージが赤で表示されます。
入力した値が事前定義した基準を満たしている場合、図9-4に示すように確認メッセージが表示されます。
セキュリティ上の理由から、値を入力した後にパスワード・フィールドをクリアすることをお薦めします。例9-2では、認証の実行後にpasswordFieldに空の文字列を設定しています。
関連APIドキュメント