2016-07-27 2 views
2

Ich habe versucht, Stack Overflow und Code Ranch, aber ohne Glück mit meiner Abfrage. Ich werde versuchen, es so einfach und direkt wie möglich zu machen. Was ich versuche zu tun, ist eine Login-Seite, die, wenn es geklickt wird, überprüft den Benutzernamen gegen was ich codiert habe und wenn es richtig ist, haben Sie diese JFrame zu entsorgen und gehen Sie auf einen anderen JFrame. Kann mir jemand in die richtige Richtung zeigen?Eingabe von einem JTextField und vergleichen Sie es mit der Zeichenfolge eingegeben und dann auf die nächste JFrame

button.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 

      if (userTextField.equals(userString)){ 
       frame.dispose(); 
       new SecondFrame(); 
      } 

     } 
    }); 

Wo Taste ist die JButton, userTextField die JTextField ist, userString ist der String, wo der Benutzername gespeichert und SecondFrame ist die JFrame ich möchte es bewegen, wenn der JButton ausgewählt

EDIT

public SecondFrame() { 
    centerPiece.setLayout(new net.miginfocom.swing.MigLayout()); 

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setSize(500, 525); 
    f.setVisible(true); 
    f.setLocationRelativeTo(null); 

Wenn Sie mehr davon wünschen lassen Sie mich wissen

+2

'userTextField.getText(). Equals' statt' userTextField.equals' und stellen Sie sicher, dass 'setVisible (true)' in Konstruktor SecondFrame – Jerry06

+0

Können Sie den SecondFrame Konstruktor schreiben? – Austin

+0

* ".. dann auf den nächsten JFrame" * 1) Siehe [Die Verwendung mehrerer JFrames, gute/schlechte Praxis?] (Http://stackoverflow.com/q/9554636/418556) 2) Für bessere Hilfe früher , poste ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/). –

Antwort

1

Sie benötigen diese

if (userTextField.equals(userString))

mit diesem

ersetzen

if (userTextField.getText().equals(userString)),

weil ohne Aufruf getText() Methode Sie nicht in der Lage sein werden, die Zeichenfolge zu erhalten, die in JTextField geschrieben wird.

1

Der korrekte Weg dazu ist MVC Pattern.

  1. sollten Sie eine Service erstellen und Ihr Unternehmen alle Logik setzen, Beispiel, Benutzername und Passwort in diesem Dienst zu validieren. Erstellen diese Methode im Dienst in einer anderen Datei

    public class UserServiceImpl { 
    
        .... 
    
        public boolean checkUser(String userName, String password) { 
         User user = userDaoImpl.getUser(userName); 
         if(user == null) 
          return false; 
         else if (!user.getPassword().equals(password)) 
          return false; 
         else 
          return true; 
        } 
    
        .... 
    
    } 
    

  2. Ihrer Ansicht nach, das heißt Ihre JFrame, sollten Sie zunächst initialisieren Ihr service.You kann auch ein einfaches Service-Objekt, wenn Sie erstellen‘ re neu zu dieses Konzept.

    public class SwingContainerDemo extends JFrame { 
        UserServiceImpl userService = new UserServiceImpl(); 
    
        .... 
    
        button.addActionListener(new ActionListener() { 
        @Override 
        public void actionPerformed(ActionEvent e) { 
    
         if (userService.checkUser(jUserNameTf.getText(), jPassword.getText())){ 
          frame.dispose(); 
          new SecondFrame(); 
         } else { 
          jAlertTF.setText("Invalid Username password combination"); 
         } 
        } 
    
        .... 
    
    }); 
    
Verwandte Themen