Überprüfung, ob JPasswordField Inhalt hat, funktioniert nicht

Tinipieps

Mitglied
Hallo!
Ich schreibe gerade an einem Programm, bei dem man sich beim Start mit Nutznamen und Passwort anmelden muss.
Nun wollte ich, für den Fall, dass es sich um einen neuen Nutzer handelt, ermöglichen, dass sich der Nutzer an Passwort anlegen kann.
Funktioniert soweit auch, nur das der Button "Passwort setzen" auch bei einem leeren JPasswordField bestätigt werden kann. Dies wollte ich eigentlich verhindern.
Findet jemand den Fehler?

Code:
private void createGUI() {
		Container cp = this.getContentPane();
		JPanel p = new JPanel();
		
		GridBagLayout gbl = new GridBagLayout();
		p.setLayout(gbl);
		GridBagConstraints c = new GridBagConstraints();
		c.gridx = 0;
		c.gridy = 0;
		c.insets = new Insets(10,10,10,10);
		
		passwd = new JLabel("Passwort: ");
		p.add(passwd,c);
		
		password = new JPasswordField(30);
		c.gridx = 1;
		c.gridwidth = 2;
		p.add(password, c);
		
		setzen = new JButton("Passwort setzen");
		c.gridx=2;
		c.gridy=1;
		c.gridwidth=1;
		p.add(setzen, c);
		
		setzen.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				String passwd = new String(password.getPassword());
				if ( ! passwd.equals(""))
					setPassword(passwd);
					System.out.println(passwd);
					NewPassword.this.setVisible(false);				
			}
		});
		
		cp.add(p, BorderLayout.CENTER);
		
	}
		});
 
Moin,

Idee: versuch' mal "if ( ! passwd.equals("") )" durch

Java:
if ( passwd.length > 0 )

zu ersetzen ....

Zudem verstehe ich die Zeile "NewPassword.this.setVisible(false);" nicht so wirklich ....
Was genau ist denn "NewPassword" .... :confused:

Gruß
Klaus
 
Hatte schon das Problem das mir bei normalen Textfeldern beim Auslesen whitespaces mitgeliefert wurden.
Würde sich auch anbieten mal das Passwort zu trimmen:

Java:
String passwd = new String(password.getPassword()).trim();
if ( ! passwd.equals(""))

Mfg
Jenson
 
Moin,

Idee: versuch' mal "if ( ! passwd.equals("") )" durch

Java:
if ( passwd.length > 0 )

zu ersetzen ....

Zudem verstehe ich die Zeile "NewPassword.this.setVisible(false);" nicht so wirklich ....
Was genau ist denn "NewPassword" .... :confused:

Gruß
Klaus

Vielen Dank!
Der Code funktioniert super ( Aber nur mit passwd.length() > 0)
NewPassword heißt die Klasse. Mit dem Aufruf "NewPassword.this.setVisible(false);" schließe ich also das aktuelle Fenster wieder
 
Zurück