2016-04-09 6 views
0

Ich mache ein Programm mit einer einfachen GUI, wo der Benutzer die Anmeldung vor dem Start des Programms tun müssen. Ich möchte den Benutzernamen und das Passwort speichern, und wenn der Benutzer das Kästchen "Remember me" aktiviert, möchte ich, dass er beim nächsten Mal keine Daten eingeben muss. Ich habe versucht, mit Java-Einstellungen API zu tun, auf diese Weise:Java speichert Benutzereinstellungen

private Preferences prefs = Preferences.userRoot().node(this.getClass().getName()); 
prefs.put("codCliente", txtCodCliente.getText()); 
prefs.put("username", txtUsername.getText()); 
prefs.put("password", DigestUtils.md5Hex(String.valueOf(txtPassword.getPassword()))); 

Aber wenn ich die App schließen und wieder öffnen, wenn ich den Inhalt von Variablen zu drucken, gibt es „Null-Taste“ Nullpointer.

Ich habe versucht, sie in einer .properties-Datei zu speichern, aber ich möchte nicht jedes Mal die gesamte Datei überschreiben, und wenn ich versuche, Apache Commons-Konfiguration mit setProperty zu verwenden, kann ich den Wert nicht setzen die Variablen.

Welches ist der beste Weg, um diese Art von Daten zu speichern?

Danke euch allen.

+0

Sie können einen Zeitstempel der zuweisen Wenn sie sich an mich erinnern, weisen Sie einfach eine Dauer von 1 Tag zu, bis sie abläuft. – piyush121

+0

Anstelle von userRoot(). Node (this.getClass(). GetName()) sollten Sie 'Preferences.userNodeForPackage (MyClass.class)' verwenden. Verwenden Sie immer ein Klassenliteral (wie 'MyClass.class') anstelle von getClass(), damit die Einstellungen nicht an einem Ort gespeichert werden, den Sie nicht erwartet haben. – VGR

+0

@ piyush121 das Problem ist, dass ich nicht in der Lage bin, Daten zu erhalten, wenn ich die Anwendung schließe. – luca89pe

Antwort

0

Ja Vorlieben sind wirklich einfach und guter Weg, dies zu tun, Problem ist, dass:

er keine Daten benötigt TEXT nächstes Mal eingeben

Das heißt, er WONT andere Gegenstände INTO FELDER.

Aber wenn ich in der Nähe und die App wieder öffnen, wenn ich den Inhalt Variablen drucken, gibt es „Null-Taste“ Nullpointer.

Was haben Sie erwartet? Sie setzen diese NULL-Werte erneut in die Einstellungen, wenn er seine App erneut startet.

Problem in Ihrem Design ist

Anwendung starts-> Lese Präferenz der Checkbox Bundesland-> {nachzulesen Anmeldeinformationen} else {nichts} -> anzeigen Anmelden ui, Benutzer gibt Anmeldeinformationen -> { Vergleichen Sie die Anmeldedaten mit denen bei den Voreinstellungen} SPEICHERN SIE ALLES NICHT, warum speichern Sie den Benutzer, mit dem Sie sich bei jedem Start der Anwendung anmelden möchten?

Sie speichern Anmeldeinformationen nur bei der Benutzererstellung, verwenden Verschlüsselung und speichern Ihre Daten für Name und Kennwort.

In Ihrer Frage gibt es nicht genug Code, um Ihnen direkt mit Codebeispiel zu helfen, Sie haben ein Problem mit Design, wo Sie diese Informationen in Ihrem Code lesen? Warum postest du diesen Teil hier nicht? Sie zeigen uns nur, dass Sie etwas speichern, na gut, das ist nutzlos für jemanden, der versucht Ihnen zu helfen.

Ich empfehle Ihnen, sich zu setzen, stoppen Code zu schreiben, und schreiben yourslef Flussdiagramm Ihrer Anwendungsstart und Login-Prozess den ganzen Weg mit, wenn Sie lesen/schreiben, etwas zu Vorlieben usw.