JavaFXでパスワードフィールドの作成・イベントを登録する方法などについて記載します。
パスワードフィールドの作成・イベントの登録方法
パスワードフィールドを作成するには、PasswordFieldクラスを使用します。
構文
PasswordField pfPasswd = new PasswordField();
実行例
次の例では、ユーザーIDとパスワードを入力し、ログインボタンを押すとユーザーIDとパスワードが正しいかチェックする処理になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.PasswordField; import javafx.scene.control.TextField; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.stage.Stage; public class createPassFieldEvent extends Application { // ユーザーID Label lblUserId = new Label("ユーザーID"); TextField txtUserId = new TextField(); // パスワード Label lblPasswd = new Label("パスワード"); PasswordField pfPasswd = new PasswordField(); // ログインメッセージ Label lblLoginMsg = new Label(); // ログインボタン Button btnLogin = new Button("ログイン"); @Override public void start(Stage pStage) throws Exception { /** * 個別のコンポーネントごとの設定 */ // ユーザーID lblUserId.setPrefWidth(70); lblUserId.setPrefHeight(30); txtUserId.setPrefWidth(150); txtUserId.setPrefHeight(30); txtUserId.setPromptText("ユーザーIDを入力"); HBox hbUserId = new HBox(); hbUserId.setAlignment(Pos.CENTER_LEFT); hbUserId.getChildren().addAll( lblUserId, txtUserId ); // パスワード lblPasswd.setPrefWidth(70); lblPasswd.setPrefHeight(30); pfPasswd.setPrefWidth(150); pfPasswd.setPrefHeight(30); pfPasswd.setPromptText("パスワードを入力"); HBox hbPasswd = new HBox(); hbPasswd.setAlignment(Pos.CENTER_LEFT); hbPasswd.getChildren().addAll( lblPasswd, pfPasswd ); // ログインメッセージ lblLoginMsg.setPrefWidth(200); lblLoginMsg.setPrefHeight(30); HBox hbLoginMsg = new HBox(); hbLoginMsg.setAlignment(Pos.CENTER_LEFT); hbLoginMsg.getChildren().addAll( lblLoginMsg ); // ログインボタン btnLogin.setPrefWidth(100); btnLogin.setPrefHeight(30); btnLogin.setOnAction( new LoginEvent() ); HBox hbLobin = new HBox(); hbLobin.setAlignment(Pos.CENTER); hbLobin.getChildren().addAll( btnLogin ); /** * 各コンポーネントをまとめる */ // ユーザーID、パスワード、ログインメッセージをまとめる VBox vbContent = new VBox(); vbContent.setMaxWidth(250); vbContent.setSpacing(10); vbContent.getChildren().addAll( hbUserId, hbPasswd, hbLoginMsg ); // ログインボタン VBox vbFooter = new VBox(); vbFooter.setMaxWidth(250); vbFooter.setSpacing(10); vbFooter.getChildren().addAll( hbLobin ); // ルートのボックス VBox vbRoot = new VBox(); vbRoot.setAlignment(Pos.CENTER); vbRoot.setSpacing(10); vbRoot.getChildren().addAll( vbContent, vbFooter ); pStage.setTitle("パスワードフィールド"); pStage.setWidth(300); pStage.setHeight(250); pStage.setScene(new Scene(vbRoot)); pStage.show(); } /** * ログインボタンクリック時の処理 */ class LoginEvent implements EventHandler<ActionEvent> { @Override public void handle(ActionEvent event) { if ( txtUserId.getText().equals("abcde") && pfPasswd.getText().equals("123abc")) { lblLoginMsg.setText("ログイン認証に成功しました。"); lblLoginMsg.setTextFill(Color.GREEN); }else { lblLoginMsg.setText("ログイン認証に失敗しました。"); lblLoginMsg.setTextFill(Color.RED); pfPasswd.clear(); } } } public static void main(String[] args){ Application.launch(args); } } |