[Java] jCheckBox "Remember Me"
alphaxenox
-
alphaxenox -
alphaxenox -
Bonjour :)
J'ai crée un launcher personnalisé pour mon serveur Minecraft en java , avec Netbeans. Mais je bloc au moment de faire la case a cocher "Remember me" pour enregistrer l'identifiant et le mot de passe et ensuite les réaffichers dans les cases approprié au lancement du programme. J'ai donc avec :
Sans savoir quoi faire , il faudrait que le programme stock les infos dans un fichier en .md5 mais je sais pas comment faire , donc pour tester , j'ai juste fais en sorte que le programme écrive l'Id et le pass dans un simple fichier .txt :
Mais voila , même a partir de la , je ne sais pas comment faire en sorte qu'au démarrage du programme les info ceux remettent et que le JCheckBox reste cocher même après avoir relancer le programme.
Et pour finir , je préfère être honnête avec vous , je ne sais presque pas coder en Java , je fais surtout du C++ , mais bon , au début j'avais réussi a faire le Launcher en VB.net sauf qu'il y a des joueurs sous mac, donc j'ai étais obligé de me tourner vers le Java, en cherchant sur les forums et avec ce que je connaissais déja avec le c++ j'ai réussi a tous faire : http://s3.noelshack.com/old/up/capture-f68e859c50.png , sauf la CheckBox "Remember Me" ou je coince complètement (Je sais l'interface est moche pour l'instant :) )
Donc s'il vous plait , je sais que de donner des indices et après de chercher tous seul ça fait bien progresser , mais moi je ne souhaite pas apprendre le Java (Je suis bien avec mon C++ :p )
Merci :)
Cordialement Alpha
J'ai crée un launcher personnalisé pour mon serveur Minecraft en java , avec Netbeans. Mais je bloc au moment de faire la case a cocher "Remember me" pour enregistrer l'identifiant et le mot de passe et ensuite les réaffichers dans les cases approprié au lancement du programme. J'ai donc avec :
private void jCheckBox1MouseClicked(java.awt.event.MouseEvent evt) {
}
Sans savoir quoi faire , il faudrait que le programme stock les infos dans un fichier en .md5 mais je sais pas comment faire , donc pour tester , j'ai juste fais en sorte que le programme écrive l'Id et le pass dans un simple fichier .txt :
private void jCheckBox1MouseClicked(java.awt.event.MouseEvent evt) {
File file = new File("testFileWriter.txt");
FileWriter fw = null;
FileReader fr = null;
try {
//Création de l'objet
fw = new FileWriter(file);
} catch (IOException ex) {
Logger.getLogger(Launch.class.getName()).log(Level.SEVERE, null, ex);
}
String str = jTextField1.getText();
str += " ";
str += jPasswordField1.getText();
try {
//On écrit la chaîne
fw.write(str);
} catch (IOException ex) {
Logger.getLogger(Launch.class.getName()).log(Level.SEVERE, null, ex);
}
try {
//On ferme le flux
fw.close();
} catch (IOException ex) {
Logger.getLogger(Launch.class.getName()).log(Level.SEVERE, null, ex);
}
// TODO add your handling code here:
}
Mais voila , même a partir de la , je ne sais pas comment faire en sorte qu'au démarrage du programme les info ceux remettent et que le JCheckBox reste cocher même après avoir relancer le programme.
Et pour finir , je préfère être honnête avec vous , je ne sais presque pas coder en Java , je fais surtout du C++ , mais bon , au début j'avais réussi a faire le Launcher en VB.net sauf qu'il y a des joueurs sous mac, donc j'ai étais obligé de me tourner vers le Java, en cherchant sur les forums et avec ce que je connaissais déja avec le c++ j'ai réussi a tous faire : http://s3.noelshack.com/old/up/capture-f68e859c50.png , sauf la CheckBox "Remember Me" ou je coince complètement (Je sais l'interface est moche pour l'instant :) )
Donc s'il vous plait , je sais que de donner des indices et après de chercher tous seul ça fait bien progresser , mais moi je ne souhaite pas apprendre le Java (Je suis bien avec mon C++ :p )
Merci :)
Cordialement Alpha
A voir également:
- [Java] jCheckBox "Remember Me"
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
3 réponses
En gros ce que tu demandes c'est des méthodes de lecture et d'écriture de deux informations (identifiant et mot de passe) dans un fichier texte, et si la lecture c'est bien passé à l'initialisation du programme, que la case "remember me" soit cochée, c'est ça ?
Oui , enfin en gros :
- L'utilisateur rentre son Id et Mot de passe
- Il coche la case "Remember"
- Le programme crypt L'Id et le Mot de passe et le stock dans un fichier.md5
- L'utilisateur ferme le programme
- L'utilisateur re-lance le programme et l'Id et le Mot de passe sont toujours là et la case "Remember" toujours coché.
Voila , comme dans toutes les applications/page web :)
- L'utilisateur rentre son Id et Mot de passe
- Il coche la case "Remember"
- Le programme crypt L'Id et le Mot de passe et le stock dans un fichier.md5
- L'utilisateur ferme le programme
- L'utilisateur re-lance le programme et l'Id et le Mot de passe sont toujours là et la case "Remember" toujours coché.
Voila , comme dans toutes les applications/page web :)
Le code entier du Programme ? Parce que sinon dans la fonction
J'ai juste mis ça :
C'était juste pour tester si ça écrie bien dans les fichiers (J'ai fais deux fichier séparé pour test)
Après je voulais mettre :
Dans
Mais il me dit non-static variable JTextField2 cannot be referenced from a Static context.
Mais encore une fois c'était juste pour voir si ça marchait simplement avec un fichier .txt non crypté :)
private void jCheckBox1MouseClicked(java.awt.event.MouseEvent evt) { }
J'ai juste mis ça :
File file = new File("Id.txt");
File file2 = new File("Pass.txt");
FileWriter fw = null;
FileReader fr = null;
FileWriter fw2 = null;
FileReader fr2 = null;
try {
//Création de l'objet
fw = new FileWriter(file);
fw2 = new FileWriter(file2);
} catch (IOException ex) {
Logger.getLogger(Launch.class.getName()).log(Level.SEVERE, null, ex);
}
String str = jTextField1.getText();
String str2 = jPasswordField1.getText();
try {
//On écrit la chaîne
fw.write(str);
fw2.write(str2);
} catch (IOException ex) {
Logger.getLogger(Launch.class.getName()).log(Level.SEVERE, null, ex);
}
try {
//On ferme le flux
fw.close();
fw2.close();
} catch (IOException ex) {
Logger.getLogger(Launch.class.getName()).log(Level.SEVERE, null, ex);
}
C'était juste pour tester si ça écrie bien dans les fichiers (J'ai fais deux fichier séparé pour test)
Après je voulais mettre :
String line;
// Lecture du fichier ligne par ligne. Cette boucle se termine
// quand la méthode retourne la valeur null.
while ((line = buff.readLine()) != null) {
System.out.println(line);
jTextField2.setText(line);
}
} finally {
// dans tous les cas, on ferme nos flux
buff.close();
}
} catch (IOException ioe) {
// erreur de fermeture des flux
System.out.println("Erreur --" + ioe.toString());
}
Dans
public static void main(String args[])
Mais il me dit non-static variable JTextField2 cannot be referenced from a Static context.
Mais encore une fois c'était juste pour voir si ça marchait simplement avec un fichier .txt non crypté :)
Si ça t'intéresse de savoir pourquoi ton code marchait pas je regarderais mais si j'ai bien compris tu préfères rester au C++ ;-)
Donc voici une classe MD5 qui pourrait t'aider. J'ai fait ça rapidement, sachant que je ne connais pas du tout Minecraft ou son mode de fonctionnement. Mais ça devrait t'aider à faire ce que tu veux je pense ;-)
Donc voici une classe MD5 qui pourrait t'aider. J'ai fait ça rapidement, sachant que je ne connais pas du tout Minecraft ou son mode de fonctionnement. Mais ça devrait t'aider à faire ce que tu veux je pense ;-)
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
class MD5
{
private String valeur;
private MD5(String str)
{
valeur=str;
}
public MD5 (String identifiant,String password)
{
valeur=encode(identifiant+password);
}
public static String encode(String texte)
{
try
{
StringBuilder hashString = new StringBuilder();
for (byte b : MessageDigest.getInstance("MD5").digest(texte.getBytes()))
{
String hex = Integer.toHexString(b);
if (hex.length() == 1)
hashString.append("0"+hex.charAt(hex.length()-1));
else
hashString.append(hex.substring(hex.length()-2));
}
return hashString.toString();
}
catch (NoSuchAlgorithmException e)
{
throw new Error(e.getMessage(),e.getCause());
}
}
public static void ecrire(File fichier,MD5 md) throws IOException
{
FileOutputStream f = new FileOutputStream(fichier);
f.write(md.valeur.getBytes());
f.close();
}
public static MD5 lire(File fichier) throws FileNotFoundException
{
Scanner sc = new Scanner(fichier);
String str = sc.nextLine();
sc.close();
return new MD5(str);
}
@Override
public boolean equals(Object o)
{
return (o instanceof MD5) && valeur.equals(((MD5) o).valeur);
}
}
class Test
{
public static void main(String...args) throws IOException
{
MD5 a = new MD5("toto","motDePasse");
MD5 b = MD5.lire(new File("toto.md5"));
if (a.equals(b))
System.out.println("OK");
else
System.out.println("KO");
MD5 c = new MD5("titi","");
MD5.ecrire(new File("titi.md5"), c);
}
}
Alors j'ai donc copié ton code dans
4 erreurs de "illegal static declaration in inner class Text. Modifier "static" is only allowed in constant variable declarations" au niveau de chaque Fonction avec Static
3 erreurs de "non static variable cannot be referenced from a static context" au niveau de "MD5 c = new MD5("titi","");"
"MD5 a = new MD5("toto","motDePasse");"
et "return new MD5(str);"
1 'Générate missing Hashcode()" au niveau de "public boolean equals(Object o)"
Et 1 "String concatenation in StringBuilder.apprend" au niveau de "hashString.append("0"+hex.charAt(hex.length()-1));"
:)
private void jCheckBox1MouseClicked(java.awt.event.MouseEvent evt)
4 erreurs de "illegal static declaration in inner class Text. Modifier "static" is only allowed in constant variable declarations" au niveau de chaque Fonction avec Static
3 erreurs de "non static variable cannot be referenced from a static context" au niveau de "MD5 c = new MD5("titi","");"
"MD5 a = new MD5("toto","motDePasse");"
et "return new MD5(str);"
1 'Générate missing Hashcode()" au niveau de "public boolean equals(Object o)"
Et 1 "String concatenation in StringBuilder.apprend" au niveau de "hashString.append("0"+hex.charAt(hex.length()-1));"
:)
Pour les 7 premières erreurs c'est parce qu'il ne faut pas le copier coller dans ta jCheckBox1MouseClicked, mais utiliser la classe MD5 pour lire/écrire des mots de passe, et les comparer. Regarde la classe Test pour voir des exemples d'utilisation.
Pour les deux autres, ça doit plutôt être des avertissements (NetBeans peut-être ?)
Pour le premier tu peux rajouter ce code (qui ne te servira à rien ^^) dans la classe MD5
Et pour le deuxième tu peux scinder la ligne en deux comme ceci :
Pour les deux autres, ça doit plutôt être des avertissements (NetBeans peut-être ?)
Pour le premier tu peux rajouter ce code (qui ne te servira à rien ^^) dans la classe MD5
@Override
public int hashCode()
{
return valeur.hashCode();
}
Et pour le deuxième tu peux scinder la ligne en deux comme ceci :
hashString.append("0");
hashString.append(hex.charAt(hex.length()-1));
Dacodac :)
Je testerais dans la soirée ou demain , et oui c'était des avertissement les deux derniers
Edit : Donc j'ai placé les deux classes
Et dans jCheckBoc j'ai fais :
Mais quand je lance le programme , j'obtiens cette Erreur
:
:/
Je testerais dans la soirée ou demain , et oui c'était des avertissement les deux derniers
Edit : Donc j'ai placé les deux classes
Et dans jCheckBoc j'ai fais :
try {
Test.main();
// TODO add your handling code here:
} catch (IOException ex) {
Logger.getLogger(Launch.class.getName()).log(Level.SEVERE, null, ex);
}
Mais quand je lance le programme , j'obtiens cette Erreur
:
Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException: No line found at java.util.Scanner.nextLine(Scanner.java:1585) at launchertoast.Launch$MD5.lire(Launch.java:79) at launchertoast.Launch$Test.main(Launch.java:105) at launchertoast.Launch.jCheckBox1MouseClicked(Launch.java:551) at launchertoast.Launch.access$900(Launch.java:30) at launchertoast.Launch$10.mouseClicked(Launch.java:269) at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270) at java.awt.Component.processMouseEvent(Component.java:6507) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6269) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4860) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2713) at java.awt.Component.dispatchEvent(Component.java:4686) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:680) at java.awt.EventQueue$4.run(EventQueue.java:678) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121) at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182) at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221) at java.security.AccessController.doPrivileged(Native Method) at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219) at java.awt.Dialog.show(Dialog.java:1072) at java.awt.Component.show(Component.java:1650) at java.awt.Component.setVisible(Component.java:1602) at java.awt.Window.setVisible(Window.java:1013) at java.awt.Dialog.setVisible(Dialog.java:1003) at launchertoast.Launch$11.run(Launch.java:602) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:675) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
:/