getPassword() は私に文字の配列を与えますが、このように見えるパスワードがこのよう******
に表示されるようにしたいのですがMyPaSwOrd
、どうすればそれを行うことができますか?
パスワードを抽出したくありません。 JPasswordField() 内に「パスワードを入力してください」のように書きたいだけです。ユーザーがクリックすると、これが消えて、次のように自分のパスワードを入力します。 * * * * * *
これを試して:
String password = new String(passwordField.getText());
ただし、ドキュメントには、パスワード情報の確認/操作/受け渡しに文字列を使用すべきではないと明示的に記載されています。
これは、char[] パスワードを確認する方法を説明します。
編集 :
JField
「ここにパスワードを入力してください」という通常のものがあり、それtext
をクリックlistener
します。ユーザーがクリックするたびに、 を削除して、フォーカスのあるJTextField
ものに置き換えますJPassword
ふたつのやり方:
編集:
クリックすると消える「Enter 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 メソッドを実行しないでください。そうしないと、パスワードが消えます。しかし、これは問題にはなりません。
汚い道
make one passwordfield と a text field... チェックボックスをオンにすると、passwordField が非表示になり、テキスト ボックスが表示されます。
チェックされていない状態では、passwordField が表示され、textfield は表示されません。
最後に、passwordField に入力されたテキストをコピーする textfield を作成します。