1. 程式人生 > >JavaFX UI控制元件教程(二十四)之Password Field

JavaFX UI控制元件教程(二十四)之Password Field

翻譯自  Password Field

在本章中,您將瞭解另一種型別的文字控制元件,即密碼欄位。

PasswordField類實現一個專門的文字欄位。通過顯示回顯字串來隱藏使用者鍵入的字元。圖23-1顯示了一個密碼欄位,其中包含提示訊息。

圖23-1帶有提示訊息的密碼欄位

 

建立密碼欄位

入門級任務是使用示例23-1中的程式碼建立密碼欄位。

示例23-1建立密碼欄位

PasswordField passwordField = new PasswordField();
passwordField.setPromptText("Your password");

對於您的使用者介面,您可以在密碼欄位中附帶提示訊息,也可以新增通知標籤。與TextField類一樣,PasswordField該類提供了setText在啟動應用程式時在控制元件中呈現文字字串的方法。但是,setText方法中指定的字串將被密碼欄位中的echo字元隱藏。預設情況下,echo字元是星號。圖23-2顯示了包含預定義文字的密碼欄位。

圖23-2帶有設定文字的密碼欄位

可以通過該getText方法獲得在密碼欄位中鍵入的值。您可以在應用程式中處理此值,並根據需要設定身份驗證邏輯。

 

評估密碼

花點時間在示例23-2中檢視可以在使用者介面中應用的密碼欄位的實現。

例23-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(new EventHandler<ActionEvent>() {
    @Override public void handle(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方法定義密碼欄位的認證邏輯。提交密碼時會呼叫此方法,並建立一個新EventHandler物件來處理鍵入的值。如果鍵入的值與所需的密碼不同,則相應的訊息將顯示為紅色,如圖23-3所示。

圖23-3密碼不正確

如果鍵入的值滿足預定義條件,則會顯示確認訊息,如圖23-4所示。

圖23-4密碼正確

出於安全原因,最好在鍵入值後清除密碼欄位。在例23-2中,在執行認證之後為passwordField設定空字串。

 

相關的API文件