背景
JavaFx密码框控件,最近碰到了“兼容性”问题,密码框控件在大部分机器运行正常,但是客户还有一部分用的是XP系统,在其电脑上出现了密码框中黑色圆点不显示的问题。
过程
解决这个问题的方案就是想办法将黑色圆点修改为其他可显示的字符,我想到了两种方式;
- 不使用PasswordField,用其他控件(如TextField)来实现密码框的功能
- 修改PasswordField,看能否修改其回显的字符
这里我是使用的是第二种方案,第一种方式我在网上找到代码,并没有实践,不知是否可行利用JavaFx开发RIA桌面应用-TextField替换PasswordField做密码框。
通过对PasswordField的方法进行查看,我发现没有直接修改回显字符的方法,所以我看了源代码,最终发现设置回显字符使用的是 TextFieldSkin.java 类,代码如下:
...
/**
* Text field skin.
*/
public class TextFieldSkin extends TextInputControlSkin<TextField, TextFieldBehavior> {
...
// For use with PasswordField
public static final char BULLET = '\u25cf';/* 这里就是圆点了 */
/**