Passwortabfrage vor Hauptmenü - Ablaufproblem

sebix

Mitglied
Hallo Zusammen,

ich übe gerade ein wenig die Java-Programmierung. Ich schreibe dazu gerade ein kleines Testprogramm. Das soll so ablaufen, dass man sich erst einloggen muss.

Dazu habe ich ein kleines Abfrageprogramm geschrieben:

Java:
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;


public class pwcheck implements ActionListener {
	
JLabel Passwort = new JLabel("Passwort");
JLabel Username = new JLabel("Benutzername");
JTextField userfeld = new JTextField(10);
JPasswordField pwfeld = new JPasswordField(10);
JButton btnok = new JButton("Einloggen");	
boolean ok;


	public boolean pwcheckwindow() {
				
		JFrame passwortabfrage = new JFrame();
		JPanel abfragepanel = new JPanel();
		abfragepanel.setLayout(new GridLayout(4,2,2,2));
		
		btnok.addActionListener(this);
		
		abfragepanel.add(new JLabel("Bitte benutzernamen eingeben:"));
		abfragepanel.add(new JLabel("                                                "));
		abfragepanel.add(Username);
		abfragepanel.add(userfeld);
		abfragepanel.add(Passwort);
		abfragepanel.add(pwfeld);
		abfragepanel.add(btnok);
		
		abfragepanel.setBackground(Color.WHITE);
		
		passwortabfrage.setSize(100, 50);
		passwortabfrage.add(abfragepanel);
		passwortabfrage.pack();
		passwortabfrage.setLocationRelativeTo(null);
		passwortabfrage.setVisible(true);
	
		
		do {

		}
		
while (ok = false);

return ok;
		
	}


	@Override
	public void actionPerformed(ActionEvent e) {

		if (userfeld.getText().equals(new String("opa"))) {
			
			if (new String(pwfeld.getPassword()).equals(new String("test"))) {
				
				System.out.println(ok);
				ok = true;
				System.out.println(ok);
			

				
		}
		}
		
		
	}

}

Ich habe also einen Action-Listener auf dem Button, der dann bei korrekter Eingabe die entsprechende Veränderung am boolean "ok" vornimmt. Diese Variable wird dann als "true" zurückgegeben an mein "Startprogramm", dieses startet dann das eigentliche Hauptmenü.

Als test lasse ich in die Konsole den Inhalt von "ok" vor und nach dem ändern schreiben. Das funktioniert auch. Aber müsste dann in diesem Moment nicht die leere "Do-While" schleife enden und sich das Fenster schließen?

Ich vermute ich mache einfach einen logischen Fehler im Ablauf oder mir fehlt noch ein wenig Verständnis.

Kann mir jemand helfen?

Viele Grüße,
Sebix
 
Zuletzt bearbeitet:

parabool

Bekanntes Mitglied
ohne mir den Code jetzt genau angeschaut zu haben: Im Schleifenkopf "ok = false" ist eine Zuweisung,
es sollte aber "ok == false" heißen (Vergleich)
 

sebix

Mitglied
Das geht natürlich. Gute Idee, aber das umgeht mein eigentliches Problem ja eher als es zu lösen?

Oder ist das eher ein theoretisches Thema an dem ich da hänge?

Viele Grüße,

Sebix
 

Ähnliche Java Themen

Neue Themen


Oben