Wie erzeuge ich die "*" bei der Passwortabfrage?

Status
Nicht offen für weitere Antworten.
D

Dolce

Gast
Hallo Jungs,

habe nachfolgenden Programm - Code im Netz
gefunden, hätte dazu aber mal ein paar kleine Fragen
um ihn richtig zu verstehen!

1. Wie kann ich die Passworteingabe durch "*" ersetzen, also
damit nicht gesehen wird was man eingibt.

2. Warum hat der Quellcode - Verfasser bei den If und While - Schleifen
ein "!" vor das Passwort Objekt gesetzt...?

Vielen Dank schonmal für eure Hilfe...


Gruß


import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
public class Passwort {
public static void main(String[] args) {
String passwort = "";

try {

do {
passwort = javax.swing.JOptionPane.showInputDialog("Geben sie das Passwort ein!");
if(!passwort.equals("Pass")) {
javax.swing.JOptionPane.showMessageDialog(null, "Das ist nicht Korrekt!");
}
}
while(!passwort.equals("Pass"));
javax.swing.JOptionPane.showMessageDialog(null, "Das ist Korrekt");

}
catch(NullPointerException e) {
javax.swing.JOptionPane.showMessageDialog(null, "Passwortabfrage abgebrochen!");
}
}
}
 

bbnvacx

Mitglied
Dolce hat gesagt.:
2. Warum hat der Quellcode - Verfasser bei den If und While - Schleifen
ein "!" vor das Passwort Objekt gesetzt...?

Das kehrt die boolean-Wirkung um.

Wenn Du z. B. folgenden Code hast:

Code:
boolean b=true;

if(b)
   System.out.println("b ist True");

dann bekommst Du die ausgabe "b ist True".

Wenn du aber folgenden Code hast:

Code:
boolean b=true;
if(!b)
    System.out.println("b ist True");

dann bekommst du die Ausgabe nicht.

:wink: Bbnv
 

Schandro

Top Contributor
!boolean invertiert den boolean

Beispiel:

Code:
boolean über18 = true;
if(!über18){ 
   // wird nicht ausgeführt...
}
Der Wert der Variable über18 wird dadurch aber net geändert.

Guck dir die Klasse
JPasswordField
an.
 
D

Dolce

Gast
Perfekt, danke schonmal für die schnelle
Antwort!

Aber wie bekomme ich jetzt noch die Eingabe in Sternchen
umgewandelt(*)!

Ich weiß das es mit der setEchoChar - Methode geht,
aber ich weiß nicht wo ich sie einbauen muss...!
 

diggaa1984

Top Contributor
Code:
import javax.swing.JOptionPane; 
import javax.swing.JPasswordField; 

public class Passwort { 

    public static void main(String[] args) { 
        String passwort = ""; 

        try { 
            do { 
                passwort = javax.swing.JOptionPane.showInputDialog("Geben sie das Passwort ein!"); 
        
                if(!passwort.equals("Pass")) { 
                    javax.swing.JOptionPane.showMessageDialog(null, "Das ist nicht Korrekt!"); 
                }
 
            } while(!passwort.equals("Pass")); 

            javax.swing.JOptionPane.showMessageDialog(null, "Das ist Korrekt"); 

        } catch(NullPointerException e) { 
            javax.swing.JOptionPane.showMessageDialog(null, "Passwortabfrage abgebrochen!"); 
        } 
    } 
}

wenn man das mal formatiert betrachtet erschliesst sich einem das viel leichter ^^

Wie kann ich die Passworteingabe durch "*" ersetzen, also
damit nicht gesehen wird was man eingibt.
mit dem schon importierten JPasswordField .. aber um das in einem Dialog zu nutzen, musst tricksen (eine JPasswordField-Komponente als Message an den Dialog übergeben, der stellt diese dann dar, und der nutzer kann dann damit arbeiten, allerdings musst du dann beim Beenden des Dialogs diese wieder auslesen etc.) .. is nicht ganz so trivial wie einfach nur n InputDialog aufzurufen wo unten ne eingabe stattfindet. Oder baust dir selbst n modales Fenster mit nem JPasswordField und paar Knöppen als Oberfläche, hat den selben Effekt, ist vermutlich nur noch aufwändiger als die Spielerei mit dem Dialog ^^

quasi liefert dir SlaterB's Beitrag schon n Bsp für die 1. Ausführung ^^
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben