Erste Schritte übersprint if kondition

Kazbah

Mitglied
Guten Morgen (liebe Sorgen)

Ich hab ein Problem mit meinem Code. Es geht um ein Login, indem ich nur einen Benutzer festgelegt habe und ich wollte die Textfelder mit meinem Benutzer vergleichen. Allerdings überspringt mein Programm immer wieder die Kondition.


Java:
String username,password;

Java:
public MainFrame() {
        initComponents();
        info1TextLabel.setVisible(false);
        infoLabel.setVisible(true);
        setResizable(false);
        
        username = String.valueOf(usernameTextField.getText());
        password = String.valueOf(passwordTextField.getText());
        
        
    }

Java:
private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
        if(username.equals("Admin") && password.equals("admin")){
            info1TextLabel.setVisible(true);
            infoLabel.setVisible(false);
            ServiceFrame sf = new ServiceFrame();
            sf.setVisible(true);
            setVisible(false);
        }else {
            infoLabel.setText("Wrong username or password. Please try again.");
       }
        
    }
 

knilch

Bekanntes Mitglied
Hi,
usernameTextField.getText() gibt eine String- Instanz zurück.
Du kannst die String- Zuweisung auch ohne String.valueOf(usernameTextField.getText())
Java:
username = usernameTextField.getText();
password = passwordTextField.getText();

mach doch mal einen System.out.println(username + ";" + password ); in der Methode loginButtonActionPerformed() {.... } vor der if- condition. Dann siehst du, was in den beiden variablen für Werte sind.
Ansonsten debuing... einen Breakpoint bei der loginButtonActionPerformed- Methode setzten.
 
Zuletzt bearbeitet:

knilch

Bekanntes Mitglied
Noch einen Nachtrag:
sind die beiden Compnents usernameTextField und passwordTextField in der Klasse MainFrame?
Wenn ja, machst du im Konstruktor die Zuweisung:
Java:
    public MainFrame() {
            initComponents();
            info1TextLabel.setVisible(false);
            infoLabel.setVisible(true);
            setResizable(false);
           
            username = String.valueOf(usernameTextField.getText());
            password = String.valueOf(passwordTextField.getText());
           
           
        }
die beiden textFileds sind jedoch bei der Initialisierung nicht belegt, d.h. username ist leer (gilt auch für password)
Du kannst es so lösen, indem du folgendes machst:
Java:
    private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
            if(usernameTextField.getText().equals("Admin") && passwordTextField.getText().equals("admin")){
                info1TextLabel.setVisible(true);
                infoLabel.setVisible(false);
                ServiceFrame sf = new ServiceFrame();
                sf.setVisible(true);
                setVisible(false);
            }else {
                infoLabel.setText("Wrong username or password. Please try again.");
           }
           
        }
so wird jedes mal wenn die loginButtonActionPerformed- Action ausgeführt wird, der aktuelle Inhalt von usernameTextField und passwordTextField für die Auswertung benutzt. (die beiden Strings username und password sind damit überflüssig)
 

Kazbah

Mitglied
username und password sind in der MainFrame Klasse und die beiden habe ich auch im Konstruktor zugewiesen.

Ich habe festgestellt, dass wenn ich diesen Code benutze dann klappt alles:

Java:
    private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
                if(usernameTextField.getText().equals("Admin") && passwordTextField.getText().equals("admin")){
                    info1TextLabel.setVisible(true);
                    infoLabel.setVisible(false);
                    ServiceFrame sf = new ServiceFrame();
                    sf.setVisible(true);
                    setVisible(false);
                }else {
                    infoLabel.setText("Wrong username or password. Please try again.");
               }
               
            }

Wenn ich jetzt aber:
Java:
username = usernameTextField.getText();
password = passwordTextField.getText();

und in der if Kondition, alles durch "username" und "password" ersetzen würde, klappts wieder nicht.
 

knilch

Bekanntes Mitglied
Wie im Nachtrag beschrieben:
die beiden textFileds sind jedoch bei der Initialisierung nicht belegt, d.h. username ist leer (gilt auch für password)
darum gehts mit
Java:
usernameTextField.getText().equals("Admin")
du must also das konstrukt usernameTextField.getText().equals("Admin") anwenden.
du kannst den beiden textFileds auch einen keyListener registrieren:
Java:
		usernameTextField.addKeyListener(new KeyListener() {
			
			@Override
			public void keyTyped(KeyEvent arg0) {
				username = usernameTextField.getText();				
			}
			
			@Override
			public void keyReleased(KeyEvent arg0) {
				username = usernameTextField.getText();				
			}
			
			@Override
			public void keyPressed(KeyEvent arg0) {
				username = usernameTextField.getText();				
			}
		});
der updated dann jedes mal die strings username und password. Dann kannst du deine bisherige ActionListenerMethode verwenden (mit if(username.equals("Admin")....)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Pinabfrage nur wenn Kondition zutrifft Java Basics - Anfänger-Themen 10

Ähnliche Java Themen


Oben