翻译自 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文档
-
PasswordField
-
TextInputControl