如何设置JavaFX密码字段echo char
How to set JavaFX password field echo char
在 Swing 中,我可以使用 setEchoChar
:
设置回显字符
new JPasswordField().setEchoChar('*');
我如何在 JavaFX 中做同样的事情?
有点难看,但是...密码掩码字符已硬编码到默认皮肤中。
您需要做的是创建自己的皮肤并实现自己的遮罩功能。
现有功能请求更灵活的密码屏蔽功能:
- RT-39954
在 PasswordField.
中设置自定义 bullet/mask/placeholder 的选项
如果有人有兴趣为 JavaFX 开发贡献 open-jfx 项目,这将是一个很好的简单开始方式...
作为背景,这里是 JavaFX 8 的制作代码com.sun.javafx.scene.control.skin.TextFieldSkin.java
:
// For use with PasswordField
public static final char BULLET = '\u2022';
. . .
@Override protected String maskText(String txt) {
if (getSkinnable() instanceof PasswordField) {
int n = txt.length();
StringBuilder passwordBuilder = new StringBuilder(n);
for (int i = 0; i < n; i++) {
passwordBuilder.append(BULLET);
}
return passwordBuilder.toString();
} else {
return txt;
}
}
因此您可以看到 com.sun
class 并没有使其可配置。
You should just be able to use CSS styling for it.
例如,为了使回显字符为“-”:
PasswordField passwordField = new PasswordField();
passwordField.setStyle("-fx-echo-char: -;");
在 Swing 中,我可以使用 setEchoChar
:
new JPasswordField().setEchoChar('*');
我如何在 JavaFX 中做同样的事情?
有点难看,但是...密码掩码字符已硬编码到默认皮肤中。
您需要做的是创建自己的皮肤并实现自己的遮罩功能。
现有功能请求更灵活的密码屏蔽功能:
- RT-39954 在 PasswordField. 中设置自定义 bullet/mask/placeholder 的选项
如果有人有兴趣为 JavaFX 开发贡献 open-jfx 项目,这将是一个很好的简单开始方式...
作为背景,这里是 JavaFX 8 的制作代码com.sun.javafx.scene.control.skin.TextFieldSkin.java
:
// For use with PasswordField
public static final char BULLET = '\u2022';
. . .
@Override protected String maskText(String txt) {
if (getSkinnable() instanceof PasswordField) {
int n = txt.length();
StringBuilder passwordBuilder = new StringBuilder(n);
for (int i = 0; i < n; i++) {
passwordBuilder.append(BULLET);
}
return passwordBuilder.toString();
} else {
return txt;
}
}
因此您可以看到 com.sun
class 并没有使其可配置。
You should just be able to use CSS styling for it.
例如,为了使回显字符为“-”:
PasswordField passwordField = new PasswordField();
passwordField.setStyle("-fx-echo-char: -;");