GUI Passwortabfrage?

snipesss

Mitglied
Ich habe ein kleines Problem. Und zwar weiß ich nicht wie ich etwas Bestimmtes in meinen Code schreiben kann. Dieses kleine Problem, lautet wie folgt:

Ich habe ein Frame in dem zwei JPasswortField's drinnen sind und ein Button um weiter zu kommen. So, jetzt möchte ich aber in den Code schreiben, wenn der Benutzer, den richtigen Benutzernamen eingibt und das richtige Passwort, und auf den 'Weiter' Button klickt, dass ein neues JFrame erscheint.
Und dasselbe auch, wenn die Felder falsch sind, das ebenso ein Frame erscheint.

Code 1:

Java:
import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;

@SuppressWarnings("serial")
public class Authenticator extends JFrame {

    private JPanel contentPane;
    private JPasswordField benutzernameFeld;
    private JPasswordField passwortFeld;

   
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Authenticator frame = new Authenticator();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
    * Create the frame.
    */
    public Authenticator() {
        setTitle("Authenticator");
        setBackground(Color.GRAY);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBackground(Color.GRAY);
        contentPane.setForeground(Color.WHITE);
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
       
        JLabel lblBenutzername = new JLabel("Benutzername:");
        lblBenutzername.setForeground(Color.BLACK);
        lblBenutzername.setBounds(92, 103, 107, 14);
        contentPane.add(lblBenutzername);
       
        JLabel lblPasswort = new JLabel("Passwort:");
        lblPasswort.setForeground(Color.BLACK);
        lblPasswort.setBackground(Color.BLACK);
        lblPasswort.setBounds(119, 134, 107, 14);
        contentPane.add(lblPasswort);
       
        JButton button1 = new JButton("Weiter");
        button1.setToolTipText("Weiter");
        button1.setVerticalAlignment(SwingConstants.BOTTOM);
        button1.setBackground(Color.GRAY);
           
        button1.setForeground(Color.BLACK);
        button1.setBounds(185, 228, 89, 23);
        contentPane.add(button1);
        button1.addActionListener(new Listener(button1));
       
        benutzernameFeld = new JPasswordField();
        benutzernameFeld.setBackground(UIManager.getColor("Button.highlight"));
        benutzernameFeld.setForeground(Color.BLACK);
        benutzernameFeld.setBounds(185, 100, 121, 20);
        contentPane.add(benutzernameFeld);
       
        passwortFeld = new JPasswordField();
        passwortFeld.setForeground(Color.BLACK);
        passwortFeld.setBackground(Color.WHITE);
        passwortFeld.setBounds(185, 131, 121, 20);
        contentPane.add(passwortFeld);
       
       
        }
        }

Code 2 (Der Listener):

Java:
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.Authenticator;
import java.net.PasswordAuthentication;

import javax.swing.*;
import javax.swing.text.PasswordView;

public class Listener implements ActionListener{
   
    JButton button1;
    Listener(JButton button1){
        this.button1 = button1;
    }
   
    @Override
    public void actionPerformed(ActionEvent button1){
        JFrame frame;
        frame = new JFrame();
        frame.setSize(500, 400);
        frame.setTitle("Welcome");
        frame.setBackground(Color.GRAY);
        frame.setLocationRelativeTo(null);
       
        JLabel label = new JLabel("Welcome", SwingConstants.CENTER);
        frame.add(label);
        label.setBackground(Color.GRAY.darker());
        frame.setVisible(true);
       
    }
}
 

Joose

Top Contributor
Du musst dem Listener die entsprechenden Referenzen auf das JTextfield bzw. JPasswordField mitgeben damit du überprüfen kannst ob der User richtig ist.
Oder aber du gibst den Inhalt der beiden Fields mit.

Ansonsten wie Nuiton schon sagt, anstatt mehrere JFrames zu verwenden ersetze doch einfach von dem aktuellen nur den Inhalt (je nachdem ob der Login erfolgreich war oder nicht)
Ansonsten bleiben nur folgende 2 Dinge zu sagen: Lies dich in LayoutManager ein ;) und java - Why shouldn't you extend JFrame and other components? - Stack Overflow
 

snipesss

Mitglied
Du musst dem Listener die entsprechenden Referenzen auf das JTextfield bzw. JPasswordField mitgeben damit du überprüfen kannst ob der User richtig ist.
Oder aber du gibst den Inhalt der beiden Fields mit.

Ansonsten wie Nuiton schon sagt, anstatt mehrere JFrames zu verwenden ersetze doch einfach von dem aktuellen nur den Inhalt (je nachdem ob der Login erfolgreich war oder nicht)
Ansonsten bleiben nur folgende 2 Dinge zu sagen: Lies dich in LayoutManager ein ;) und java - Why shouldn't you extend JFrame and other components? - Stack Overflow
Und wie sollte das dann aussehen?
 

Joose

Top Contributor
So wie du dem Listener schon das JButton Objekt übergibst kannst du ihm auch das JTextfield bzw. JPasswordField übergeben und dann innerhalb der actionPerformed Methode auswerten.
 

Ähnliche Java Themen

Neue Themen


Oben