Simple way to have a hybrid JTextField / JPasswordField?
我正在开发一个具有simpe登录界面的简单小程序。
为简洁起见,我有两个用于用户名和密码的JTextField,它们也用作标签。即,首先,用户名JTextField将用灰色文字" \\ username "预先填充,而密码JTextField则用" simple password "预先填充。
然后,一旦JTextField获得焦点,我便清除预填充文本并将文本颜色设置为黑色。与stackoverflow的搜索框类似,但摇摆不定。
为了安全起见,我想在密码JTextField成为焦点时屏蔽密码字段(但是当然,预填充文本仍然清晰可辨)。 JPasswordField不允许切换遮罩/取消遮罩。
在我的简单applet中获得此功能的简单方法有何想法?
您可以使用setEchoChar((char)0);禁用屏蔽回显字符。如JavaDoc中所述。
一个例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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"); } }}); |
Greetz,
GHad
"文本提示"类将支持密码字段。