JPasswordField

Wyatt

Erfahrenes Mitglied
Hey Leute,

ich arbeite zur Zeit mit der Javamail-API und einer kleinen GUI zum auslesen von Mails aus einem Pop3 Account... soweit so gut!
Nun gibt es die Möglichkeit ein Passwort einzugeben, welches ich dann per getPassword(); Methode auslesen will und welches dann zum einloggen in den Account gebraucht wird...

Leider funktioniert das überhaupt nicht, ich hab es auch schon mit getPassword().toString(); versucht... selbes Ergebnis, immer irgendein Kauderwelsch...

Gibt es eine Möglichkeit den Text aus dem PasswordField im Klartext auszulesen?!
Falls nicht, hätte Ihr eine Idee, wie ich das selbe System mit einem JTextField realisieren kann (Text wird durch z.B. Sternchen ersetzt)?!

Grüße
 
Moin!
Code:
getPassword().toString()
funktioniert nicht, weil getPassword() ein char Array zurückgibt. D.h. du bekommst da nur die Speicheradresse mit toString()

Aber
Code:
System.out.println(field.getPassword());
System.out.println(new String(field.getPassword())); //bzw.
String s = new String(field.getPassword());
sollte auf jeden Fall funktionieren... Falls es merkwürdigerweise doch net klappt, solltest du mal deinen Code posten..

*grüssle*
MeinerEiner
 
Hi MeinerEiner,

danke für deine Hilfe, hat super funktioniert...

ich hab leider nur grundlagen in dem bereich, ich hätte gedacht, dass er das passwort in einem array im klartext zurückgibt...
durch die toString() methode, hab ich gedacht, gibt er es einfach als string zurück :)

wieder etwas gelernt ;-)

Grüße
 
Hallo,

ich habe leider auch mit den Tipps, die ich finden konnte, keine lauffähige Passwortabfrage generieren können. Jedesmal, wenn ich die Anwendung starte, dann wird mit ausgegeben, das Benutzername/Passwort falsch ist, er übergeht also meine if-Anweisung. Warum, weiß ich aber leider nicht.
Kann mir vielleicht jemand weiterhelfen, der mir sagt, wo sich mein Fehler verbirgt?

Code:
package gui;

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

public class UserProof extends JFrame {
	public UserProof(){
		super("Passwortabfrage");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		Container content = getContentPane();
		content.add(initLayout());
		myListener();
	}
	private JComponent initLayout(){
		JPanel proofMain = new JPanel();
		proofMain.setLayout(new GridLayout(2,2));
			JPanel proofLbl = new JPanel();
			proofLbl.setLayout(new BoxLayout(proofLbl, BoxLayout.Y_AXIS));
				proofLbl.add(new JLabel("Mitarbeiter-ID: "));
				proofLbl.add(new JLabel("Passwort: "));
			JPanel proofTf = new JPanel();
			proofTf.setLayout(new BoxLayout(proofTf, BoxLayout.Y_AXIS));
				proofTf.add(tfName);
				proofTf.add(pword);
		proofMain.add(proofLbl);
		proofMain.add(proofTf);
		proofMain.add(btn_ok);
		proofMain.add(tfNote);
		return proofMain;
	}
	private void myListener(){
		btn_ok.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
//				System.out.println(pword.getPassword());
				pw = pword.getPassword();
				pwKorr = String.valueOf(pw);
				if(pwKorr.equals("123") && tfName.equals("931285")){
					UserInterfaceInv ui = new UserInterfaceInv();
					ui.pack();
					ui.setVisible(true);
					ui.setSize(375,400);
				}
				else {
					tfNote.setText("Benutzer/Passwort falsch");
				}
			}
		});
	}
	public static void main(String[] args){
		UserProof up = new UserProof();
		up.pack();
		up.setVisible(true);
	}
	private static final long serialVersionUID = 7711938862782475295L;
	private JTextField tfName = new JTextField("", 15), tfNote = new JTextField("", 10);
	private JPasswordField pword = new JPasswordField("", 10);
	private JButton btn_ok = new JButton("OK");
	private char[] pw;
	private String pwKorr;
}

Wäre super, da ich mit meinem Latein am Ende bin. Danke.
 
Da sieht man es mal wieder, man sitzt vor seinem Programm, sieht den Wald vor lauter Bäumen nicht und bastelt an der falschen Baustelle. Dank dir! Nun funktioniert es endlich, wie ich mir das vorgestellt habe.
 

Neue Beiträge

Zurück