JavaFX UI控制元件教程(二十四)之Password Field
阿新 • • 發佈:2018-11-10
翻譯自 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文件