Aus PasswordField das Passwort bekommen

Xym

Erfahrenes Mitglied
Wie oben bereits genannt habe ich ein PasswordField.
Nun will ich das passwort in dem String Password speichern.
Wie mache ich das ****
Habe es so versucht:
Code:
String Password = pw.getText();
Und mit :
Code:
char [] zeichen = pw.getPassword();
String password = new String ( zeichen );
 
Das Passwort bekommen ich jetzt doch.
Aber die Anmeldung läuft nicht.
Ich zerbrech mir schon den Kopf wieso
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JFrame1 extends JFrame
{
  JButton login = new JButton ("Login");
  JLabel Benutzername = new JLabel ("Benutzername");
  JTextField B = new JTextField ();
  JLabel Passwort = new JLabel ("Passwort");
  JPasswordField P = new JPasswordField ();
  

   public JFrame1()
   {
     super("Unser erstes Swing-Fenster");
     this.setSize(800,600);
     this.show();
     setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE);
     
     setLayout(null);

     add(Benutzername);
     add(Passwort);
     add(B);
     add(P);
     Benutzername.setBounds(10,10,100,30);
     Passwort.setBounds(10,40,100,30);
     B.setBounds(120,10,200,30);
     P.setBounds(120,40,200,30);

     add(login);
     login.setBounds(100,100,80,40);
     login.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
             if(e.getSource() == login)
             {
               String Benutzername = B.getText();
               char [] zeichen = P.getPassword();
               String password = new String ( zeichen );
               if(Benutzername=="hi" && password=="hi")
               {
                 System.out.println("Login erfolgreich");
               }
               else
               {
                 System.out.println("Login felgeschlagen");
               }
             }
            }
        });


     


   }
   


   public static void main(String argv[])
   {
     JFrame1 fenster = new JFrame1();
   }
}
Wenn ich in beiden Feldern hi eingebe steht das auch in den Strings. Das habe ich mit Ausgaben geprüft.
Aber klicke ich auch login kommt immer die Meldung "Login felgeschlagen".
 
Zuletzt bearbeitet:
Dein Problem ist der Vergleich, und zwar solltest du wenn du Objekte vergleichst immer mit anObjekt.equals(anotherObjekt) arbeiten, denn "==" prüft darauf, ob es sich um die gleichen Objekte handelt nicht ob z.B. der String gleich ist, dafür ist dann nämlich die equals-Methode da, die in jeder Klasse anders überschrieben ist, um nur die Werte auf Gleichheit zu überprüfen die rein logisch gesehen die Gleichheit von zwei Objekten definieren.
Kurzes Beispiel:
Java:
String s1 = "einString";
String s2 = "nochEinString";
if (s1 == s2) {} //false
if (s1.equals(s2)) {} //false

s2 = "einString";

if (s1 == s2) {} //false, weil es eben nicht die gleichen Objekte sind
if (s1.equals(s2)) {} //true, weil es die gleichen Strings sind, und die equals-Methode in der Klasse String so überschrieben wurde

s2 = s1;
if (s1 == s2) {} //true, weil es jetzt auch die gleichen Objekte sind
if (s1.equals(s2)) {} //true, s.o.
Das solltest du auch bei dem "e.getSource() == input" machen.

Gruß
Matt
 
Zurück