2012-05-24 50 views
3

getPassword()給了我一個字符數組,但我想要看起來像這樣的密碼******顯示出像這樣MyPaSwOrd,我該怎麼做?我不想提取密碼,我只是想在JPasswordField()內寫入「Enter your Password」,當用戶點擊它時,這消失了,然後他輸入自己的密碼,這是這樣* * * * * *如何在JPassword中顯示字符

+1

改爲使用'JTextField'? –

+0

我只是想添加諸如「輸入密碼」之類的東西,當用戶點擊該字段時,此消失,然後他鍵入他的密碼 –

回答

1

兩種方式:

  1. 使用setEchoChar方法(參見here),並設置爲0的值(像的JavaDoc解釋)
  2. 使用共同的JTextField

編輯:

如果你想有一個像在你的領域上點擊消失「輸入PW」一文,然後再嘗試這樣的事:

public class JPassword { 

    public static void main(String[] args) { 

     JFrame frame = new JFrame(); 

     final JPasswordField field = new JPasswordField(); 

     field.addFocusListener(new FocusListener() { 

      @Override 
      public void focusLost(FocusEvent arg0) { 

       char c = 0; 
       field.setEchoChar(c); 
       field.setText("Enter PW"); 

      } 

      @Override 
      public void focusGained(FocusEvent arg0) { 

       char c = 1; 
       field.setEchoChar(c); 
          field.setText(""); 
      } 
     }); 

     char c = 0; 
     field.setText("Enter PW"); 
     field.setEchoChar(c); 

     frame.setLayout(new FlowLayout()); 
     frame.getContentPane().add(new JButton("test")); 
     frame.getContentPane().add(field); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

注意:您需要檢查是否用戶是否輸入了密碼。如果他有,請不要執行focuseGained方法。否則,密碼將消失。但這不應該是一個問題。

1

試試這個:

String password = new String(passwordField.getText()); 

然而,文件明確規定,你不應該使用字符串檢查/操作/傳遞密碼信息。

This explains how to check char[] passwords.

編輯:

你可以有一個普通的JField與 「在這裏輸入你的密碼」 爲text,並把點擊listener就可以了。每當用戶點擊它,取出JTextField,並與具有聚焦

0

骯髒的方式

做一個passwordfield和文本字段...當你選中該複選框,passwordField將JPassword王氏更換無形和文本框可見。

而在未選中的情況下,passwordField將可見並且文本字段不可見。

最後,使textfield複製passwordField中輸入的文本。

相關問題