不幸的是,子弹被硬编码,TextFieldSkin但您可以通过覆盖默认值轻松创建PasswordSkin,如下所示:
import com.sun.javafx.scene.control.skin.TextFieldSkin;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
public class PasswordSkin extends TextFieldSkin {
public PasswordSkin(TextField textField) {
super(textField);
}
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("*");
return passwordBuilder.toString();
} else {
return txt;
}
}
}
Run Code Online (Sandbox Code Playgroud)
要使用它,叫setSkin上你的PasswordField:
PasswordField input = new PasswordField();
input.setSkin(new PasswordSkin(input));
Run Code Online (Sandbox Code Playgroud)
或者,您可以在样式表中包含以下内容,而不是手动设置外观:
.password-field {
-fx-skin: 'sample.PasswordSkin'
}
Run Code Online (Sandbox Code Playgroud)
确保sample.PasswordSkin已更新以反映您的皮肤的完全限定类名.现在,加载样式表的每个场景或节点都不需要手动配置外观.
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |