代码之家  ›  专栏  ›  技术社区  ›  Patrick

混合JTextField/JPasswordField的简单方法?

  •  2
  • Patrick  · 技术社区  · 14 年前

    我正在开发一个简单的小程序,它有一个simpe登录接口。

    一旦JTextField获得焦点,我就清除前缀文本并将文本颜色设置为黑色。类似于stackoverflow的搜索框,但在swing中。

    现在为了安全起见,我想在password JTextField获得焦点时屏蔽password字段(当然,首先还是要让预先填充的文本清晰可见)。JPasswordField不允许切换掩码/取消掩码。

    在我的简单小程序中,有没有简单的方法来获得这个功能的想法?

    2 回复  |  直到 14 年前
        1
  •  8
  •   GHad    14 年前

    可以使用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");
                }
            }});
    

    伽德

        2
  •  1
  •   camickr    14 年前