Swing Passwordfield überprüfen

L

Les Miserables

Gast
Hallo Leute ich hoffe ich bin hier richtig und ihr könnt mir helfen ;)

Ich soll eine "einfache" Passwortabfrage machen d.h habe ein Passwordfield und in einer anderen Klasse soll ich jetzt halt die verschiedenen Passwörter angeben, trifft eins davon zu soll man eine Seite weiter kommen mit einem Klick auf den Button bestätigen so sieht das bis jetzt bei mir aus:

Code:
public class Passwortframe extends JFrame implements ActionListener {

	private static final long serialVersionUID = 1L;

	private JButton bestaetigen;
	private JButton beenden;
	private JPasswordField pwf;
	private JLabel pwlabel;

	public Passwortframe() {

		super();

		// JFrame oframe = new JFrame();
		this.setSize(700, 300);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		JPanel mainpanel = new JPanel();
		mainpanel.setBackground(Color.white);
		mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.Y_AXIS));

		JPanel opanel0 = new JPanel();
		opanel0.setBackground(Color.white);
		opanel0.setLayout(new BoxLayout(opanel0, BoxLayout.X_AXIS));

		JPanel opanel = new JPanel();
		opanel.setBackground(Color.white);
		opanel.setLayout(new BoxLayout(opanel, BoxLayout.X_AXIS));

		JPanel opanel1 = new JPanel();
		opanel1.setBackground(Color.white);
		opanel1.setLayout(new BoxLayout(opanel1, BoxLayout.X_AXIS));

		JPanel opanel2 = new JPanel();
		opanel2.setBackground(Color.white);
		opanel2.setLayout(new BoxLayout(opanel2, BoxLayout.X_AXIS));
		
		JLabel bla = new JLabel("V-Nummer und Benutzername eingeben:");

		// Textfeld für die Pfadeingabe
		JTextField vnr = new JTextField("V-Nummer");
		vnr.setEditable(true);
		vnr.setBackground(Color.white);
		vnr.setSize(20, 20);

		pwf = new JPasswordField("Passworteingabe");
		pwf.setEditable(true);
		pwf.setBackground(Color.white);

		beenden = new JButton("Abbrechen");
		beenden.addActionListener(this);

		bestaetigen = new JButton("Eingabe bestätigen");
		bestaetigen.addActionListener(this);
		

		pwlabel = new JLabel("Richtiges Passwort");
		pwlabel.setVisible(false);
		
		opanel0.add(bla);
		opanel.add(vnr);
		opanel.add(pwf);
		opanel1.add(bestaetigen);
		opanel1.add(beenden);
		opanel2.add(pwlabel);

		mainpanel.add(opanel0);
		mainpanel.add(opanel);
		mainpanel.add(opanel1);
		mainpanel.add(Box.createRigidArea(new Dimension(300, 300)));
		this.add(mainpanel);

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == bestaetigen) {
			new Test();
			this.setVisible(false);
		} else if (pwf.getText() == "bla"){
			pwlabel.setText("Richtiges Passwort");
			pwlabel.setVisible(true);
		}
		
	}

}

Im actionlistener muss ich ja jetzt das Passwort irgendwie aus dieser anderen noch zu erstellenden Klasse auslesen wie mache ich das? und was für ne klasse oder so soll ich erstellen in dem ich die Passwörter hinterlege?
Vielleicht merkt ihr schon allein an meinen programmierung bzw. was ich hier laber das ich mich nicht gut auskenne also bitte kein fachchinesisch wenns geht ;) Und internet habe ich schon geschaut habe aber nicht wirklich was gefunden..

Für Hilfe wäre ich super dankbar :)

Lg

LM
 

jgh

Top Contributor
[TIPP]das [c]setVisible(true)[/c] ruft man als letzes auf

[c]if (pwf.getText() == "bla"){...[/c]
STRINGS werden in JAVA mit equal(String anotherString) verglichen!!!![/TIPP]

Java:
...		this.add(mainpanel);

		this.setVisible(true);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == bestaetigen) {
			char[] input = pwf.getPassword();
			if (IrgendeineAndereKlasse.isPasswordCorrect(input)) {
				JOptionPane.showMessageDialog(this, "Korrekt");
				this.dispose();
				// und was dann auch immer noch passieren soll
			}

			else {
				JOptionPane.showMessageDialog(this, "Nicht korrekt",
						"Falsches Password", JOptionPane.ERROR_MESSAGE);

			}
		}
	}

}

class IrgendeineAndereKlasse {
	public static boolean isPasswordCorrect(char[] input) {
		boolean isCorrect = true;
		char[] correctPassword = { 'b', 'l', 'a' };

		if (input.length != correctPassword.length) {
			isCorrect = false;
		} else {
			isCorrect = Arrays.equals(input, correctPassword);
		}
		return isCorrect;
	}
}

Hier wird das ganze besser und genauer beschrieben
 

Ähnliche Java Themen


Oben