2016-07-13 18 views
0

Ich benutze das JPasswordField, um einen Benutzernamen und ein Passwort für eine Login-Funktion zu haben. Das .getPassword funktioniert für das Passwort, aber nicht für den Benutzernamen. Irgendeine Idee, warum es nicht für den Benutzernamen funktioniert, wenn ich genau dasselbe eintippte?Java JPasswordField .getPassword() Probleme

Hier ist mein Code:

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.Arrays; 

class pros 
{ 
    JFrame frame; 
    private static void show(){ 
    JFrame frame = new JFrame("LOGIN"); 
    frame.setSize(450,450); 
    frame.setLayout(new GridLayout(0,1)); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel panel = new JPanel(); 
    panel.setBackground(Color.BLACK); 

    JLabel username = new JLabel("Enter the Username: ",JLabel.LEFT); 
    username.setForeground(Color.WHITE); 
    username.setFont(username.getFont().deriveFont(24f)); 
    panel.add(username); 

    JPasswordField user = new JPasswordField(10); 
    user.setEchoChar('?'); 
    panel.add(user); 

    JLabel password = new JLabel("Enter your Password: ",JLabel.RIGHT); 
    password.setForeground(Color.WHITE); 
    password.setFont(password.getFont().deriveFont(24f)); 
    panel.add(user); 
    panel.add(password); 

    JPasswordField field = new JPasswordField(10); 
    field.setEchoChar('•'); 

    JButton ok = new JButton("OK"); 
    ok.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e) 
     { 
      String input = String.valueOf(field.getPassword()); 
      String user = String.valueOf(user.getPassword()); 
      if(input.equals("double" && user.equals("relocating"))) 
      { 
       field.setText(""); 
       pane(); 
     } 
    }}); 
    panel.add(field); 
    panel.add(ok); 
    frame.add(panel); 
    frame.setVisible(true); 
} 

Antwort

0

Verwendung System.out.println (Eingang +“„+ user) vor der if-Anweisung nur um zu sehen, was die Werte der Variablen werden dann wissen Sie die Problem und man kann es

{ 
     String input = String.valueOf(field.getPassword()); 
     String user = String.valueOf(user.getPassword()); 
     System.out.println(input+" "+user);//here print see the consul to know why it's not working 
     if(input.equals("double" && user.equals("relocating"))) 
     { 
      field.setText(""); 
      pane(); 
    } 

beheben oder sein kann, weil Sie den gleichen Namen für den String und das Feld verwenden

+0

oder kann sein, weil Sie den gleichen Namen für die Zeichenfolge und das Feld verwenden – Cherif

0

es gibt ein paar Fehler in dir Code. Als erstes fügen Sie das 'Benutzer' JPasswordField zweimal in Ihrem übergeordneten Panel hinzu. Zum ersten Mal wird hier getan:

JPasswordField user = new JPasswordField(10); 
user.setEchoChar('?'); 
panel.add(user); 

Nachdem Sie die Komponente und eine hier initialisieren:

JLabel password = new JLabel("Enter your Password: ",JLabel.RIGHT); 
password.setForeground(Color.WHITE); 
password.setFont(password.getFont().deriveFont(24f)); 
panel.add(user); 
panel.add(password); 

Zweitens, warum Sie Ihre Komponente auf das Panel ‚Feld‘ nach der Initialisierung der Schaltfläche hinzufügen (zusammen mit seinem Hörer).

Drittens, wie lange ist Ihr Benutzername? Wenn es länger als 10 Zeichen ist, würde ich nicht arbeiten, da Sie die Größe begrenzt haben.