1
是否可以將這些項目符號更改爲passwordField中的星號?如果是這樣,怎麼樣? Bullet to passwordField
是否可以將這些項目符號更改爲passwordField中的星號?如果是這樣,怎麼樣? Bullet to passwordField
子彈不幸硬編碼在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;
}
}
}
要使用它,在你的PasswordField
致電setSkin
:
PasswordField input = new PasswordField();
input.setSkin(new PasswordSkin(input));
或者,您也可以在樣式表中包含以下內容,而不是手動設置蒙皮:
.password-field {
-fx-skin: 'sample.PasswordSkin'
}
確保sample.PasswordSkin
已更新以反映您皮膚的完全限定類名。現在,加載了樣式表的每個場景或節點都不需要手動配置皮膚。
請注意,在Java 9中,「TextFieldSkin」的包名稱更改爲「javafx.scene.control.skin.TextFieldSkin」(並且它成爲公共API的一部分)。 –