我正在开发一个简单的小程序,它有一个简单的登录界面。
为了简洁起见,我有两个用于用户名和密码的 JTextField,我也将其用作标签。即,首先,用户名 JTextField 将预填充灰色文本“用户名”,密码 JTextField 预填充“简单密码”。
然后,一旦 JTextField 获得焦点,我就会清除预填充文本并将文本颜色设置为黑色。与 stackoverflow 的搜索框类似,但处于 swing 状态。
现在,为了安全起见,我想在密码 JTextField 获得焦点时屏蔽密码字段(但当然,预填充文本仍然清晰可见)。 JPasswordField 不允许切换掩码/取消掩码。
关于在我的简单小程序中获得此功能的简单方法有什么想法吗?
最佳答案
您可以使用 setEchoChar((char)0) 禁用屏蔽回显字符;如 JavaDoc 中所述。
一个例子
final JPasswordField pass = new JPasswordField("Password");
Font passFont = user.getFont();
pass.setFont(passFont.deriveFont(Font.ITALIC));
pass.setForeground(Color.GRAY);
pass.setPreferredSize(new Dimension(150, 20));
pass.setEchoChar((char)0);
pass.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
pass.setEchoChar('*');
if (pass.getText().equals("Password")) {
pass.setText("");
}
}
public void focusLost(FocusEvent e) {
if ("".equalsIgnoreCase(pass.getText().trim())) {
pass.setEchoChar((char)0);
pass.setText("Password");
}
}});
再见, 盖德
关于java - 拥有混合 JTextField/JPasswordField 的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3708192/