eine Frage zu jpasswordfield

orlin

Mitglied
Hallo java Experten,

im jpasswordfield werden alle Benutzereingaben wenn man einstellt z.B durch "*" dargestellt. Ich möchte aber wenn nichts eingegeben ist den Text "password" im Textfield darstellen. So bald der Benutzer ein Zeichen dann eingibt, soll wieder "*" dargestellt werden.
Ist das überhaupt möglich mit jpasswordfield****

Danke im Voraus :D

gruß
Orlin
 
S

SE

Nein ... das JPasswordField wurde speziell dafür entwickelt das eben unabhängig von L&F oder anderen Document-Settings das Passwort nie im Klartext angzeigt wird. Und ein JTextField zu verwenden wäre ein Sicherheitsrisiko.
 

orlin

Mitglied
Hallo SpiKEe,

erst mal danke für eine Antwort.
Ich möchte das eigentliche Passwort gar nicht im Klartext anzeigen sondern wenn im JPasswordField nichts eingegeben ist (leer), ein beliebiges String im Klartext darstellen. Ich habe keine Methode gefunden die so was unterstutzt.
 
S

SE

Naja ... wenn du ein "Text" setzt ist das für das JPasswordField ein "Passwort". Und durch seine Implementierung ist es nicht möglich dieses im Klartext anzigen zu lassen.
 

genodeftest

Erfahrenes Mitglied
Du könntest es so realisieren, dass du ein JTextField nimmst, in dem Standardmäßig ein Text gerendert wird. Wenn der Nutzer darauf klickt oder es auswählt, wird es durch ein JPasswordField ersetzt.
 

orlin

Mitglied
hallo genodeftest,
danke für eine Antwort.
Das ist natürlich eine Variante, die ich probieren kann.
Das erscheint mir aber etwas kompliziert.

Gruß
orlin
 
S

SE

Also rein vom OOP-Standpunkt und mit gewissen Grundlagen ist das in ein paar Zeilen gecoded ... fehlen dieses jedoch wird das für dich Rätzelraten und es wäre einfacher dich mit der Antwort anzufreunden : geht nicht.
 

javaDeveloper2011

Erfahrenes Mitglied
Hallo,

ist zwar AWT, aber was hältst du von einem TextField, z.B. so:
Java:
final TextField textfeld = new TextField(20);
textfeld.setText("Passwort");
textfeld.setForeground(Color.gray);
textfeld.addFocusListener(new FocusListener() {
     public void focusGained(FocusEvent e) {
         if("Passwort".equals(textfeld.getText())){{     // Falls noch nichts eingetragen wurde
              textfeld.setEchoCharacter('*');                // Für jedes eingegebene Zeichen '*' anzeigen
              textfeld.setText("");
              textfeld.setForeground(Color.black);
         }
     }
     public void focusLost(FocusEvent e) {
         if(textfeld.getText().equals("")){    // Falls textfeld bei verlassen leer ...
             textfeld.setEchoChar('\0');        // ... wieder Zeichenkette erscheinen lassen
             textfeld.setText("Passwort");
             textfeld.setForeground(Color.gray);
         }
     }
});

So werden Pasworter immer als '*' angezeigt, wobei "Passwort" selber als Klartext und grau angezeigt wird.

Gruß javaDeveloper2011
 
S

SE

Hmm ... sieht auf jedenfall super aus ... und sollte so doch auch eigentlich in Swing machbar sein ... ist aber wie esagt nicht sehr sicher da durch Änderung des L&F der EchoChar überschrieben werden kann ... wesswegen ja extra das JPasswordField erdacht wurde.