IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[debutant] sauvegarde des préférences


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 86
    Par défaut [debutant] ShutownHook - sauvegarde des préférences
    Bonjour,

    Je cherche à sauvegarder des préférences utilisateur.
    J'utilise pour cela la classe Preferences , les méthodes .put et .get :

    Preferences pref = Preferences.userRoot();
    ...
    pref.put("nom", name);
    ...
    String s=pref.get("nom","");


    (C'est pas du code... c'est juste pour montrer ce que j'utilise, tout bêtement d'ailleurs)

    Mon problème est le suivant : ça fonctionne très bien sous Windows et Linux. Par contre avec un Mac, ben pas du tout (retour utilisateur)

    Je n'ai pas de Mac et n'y connais donc rien. Je ne sais pas si le problème vient du "put" ou du "get" ou d'ailleurs....

    Auriez-vous une explications, SVP ? :-)

    Merci

  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Tu exécutes ça quand tu fermes la fenêtre (WindowListener)?

    Si oui, c'est parce que sous MAC, si tu cliques sur la fenêtre, ça tue le processus... (il y a un moyen sous mac de le fermer correctement, mais en cliquant, ça tue)...

    Il faut gérer un Hook à la main, etc...

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 86
    Par défaut
    Salut Rom,

    Merci de ta réponse. Effectivement, c'est à la fermeture de la fenêtre que je lance la méthode qui sauve les préférences...

    "Gérer un hook à la main", ça veut dire quoi ? C'est si compliqué à faire ?

    Je vais rechercher de ce côté en tous cas.

    Merci, a+

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Regarde la méthode exit() de la classe org.myfreetv.view.MyFreeTV et le windowlistener de org.myfreetv.view.MainFrame ici:
    ftp://myfreetv3:dev@rom1v.myftp.org/src/

    D'ailleurs, plutôt la méthode readResolve() qui crée le hook...

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 86
    Par défaut
    Bon je me suis un peu documenté sur Runtime.addShutDownHook ; par contre pour ton code, là c'est fermé :-)

    Voici donc le bout de code concerné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public MainFrame() {
       super();
     
       this.prefs = Preferences.userRoot();
       this.initialize();
       this.setVisible(true);
       this.loadPreferences();
    }
     
    private void initialize() {
       this.setSize(640, 480);
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    // this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
     
       Thread hook = new Thread("ShutdownHook"){
            public void run(){
    	savePreferences();
                 System.out.println("HOOK OK");
            }
       };
       Runtime.getRuntime().addShutdownHook(hook);
     
       this.setResizable(false);
       this.setContentPane(getJContentPane());
       this.setTitle("Version 2");
    //this.addWindowListener(new java.awt.event.WindowAdapter() {
    //	public void windowClosing(java.awt.event.WindowEvent e) {
    //		savePreferences();
    //	}
    //});
    }
    Malheureusement je n'ai pas de Mac ni de Maciste sous la main pour tester. Par contre, quand je quitte l'appli "normalement" en fermant la fenêtre, le hook est bien exécuté, ce qui semble ne pas être le cas autrement :

    par exemple sous eclipse en cliquant sur "terminate", la console ne me sort pas "HOOK OK"

    Merci de votre aide

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En même temps quand tu fais ça sous eclipse tu tue le process java, donc forcément...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OL-2007] sauvegarde des préférences utilisateurs
    Par deglingo592003 dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 12/06/2009, 14h57
  2. meilleur solution de sauvegarde des préférences
    Par gargantua dans le forum Général Java
    Réponses: 5
    Dernier message: 20/01/2009, 11h05
  3. [debutant]sauvegarde des valeurs dans un formulaire
    Par pimousse_cerise dans le forum JSF
    Réponses: 7
    Dernier message: 15/06/2007, 09h56
  4. [Debutant] Sauvegarder des données
    Par ArHacKnIdE dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 16/11/2006, 20h00
  5. sauvegarde des Préférences
    Par menuge dans le forum Langage
    Réponses: 5
    Dernier message: 08/08/2006, 08h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo