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

Java Discussion :

Comment actualiser les données à travers JFrame


Sujet :

Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Comment actualiser les données à travers JFrame
    bonjour à tous.

    je travaille sur un petit projet et mon interface se présente sous la forme de 3 JPanel organiser dans un CardLayout.
    les deux premiers JPanel servent à saisir des données qui doivent être exploités dans des JComboBox dans le troisième JPanel.

    les 3 JPanel sont initialisés avec les même données qui se présentent sous forme de TreeMap et TreeSet. J'ai lu que les objets étaient transmis par référence et donc qu'il me suffisait d'actualiser le contenu de chaque panel pour avoir les données actualiser (repaint, revalidate) mais ça ne marche pas.

    quelqu'un pour m'expliquer pourquoi ?

    merci.

  2. #2
    Membre actif
    Avatar de guatto
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 179
    Points : 226
    Points
    226
    Par défaut
    Salut,

    en gros tu essayes de superposer des jPanels ? si c'est le cas voici comme s'y prendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        jPanel8.removeAll();     //efface tout ce qu'il y a dans le jPanel8 (notre jPanel8 qui va contenir les autres jPanel6 & jPanel7)
        jPanel8.repaint();        //redessine le jPanel8
        jPanel8.revalidate();    //revalide le jPanel8
     
        jPanel8.add(jPanel6);    //on ajoute le jPanel6
        jPanel8.repaint();        //on redessine 
        jPanel8.revalidate();
    pour ton cas le jPanel8, c'est elle va contenir tes 3 autres jPanels et pour afficher celle que tu veux il suffit de remplacer le jPanel6 ! (attention il y a un ordre à respecter dans la superposition), Bonne chance !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    merci pour ta réponse mais peut-être que j'ai pas été très claire.
    en fait, je passe d'un jpanel à l'autre sans problème. là où ça coince c'est que les données saisie dans l'un des panneau doivent être actualisées dans tous les autres et c'est ce que je n'arrive pas à faire.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si chaque JPanel possède une référence vers ta Map ou ton Set, oui tes données restent a jour, ce n'est pas forcément le cas de l'affichage.
    D'une part car la methode repaint() n'est pas appelée automatiquement lorsque tu mets a jour tes données et d'autre part, tes données ne sont pas forcément liées par référence a tes composants. Je m'explique, si tu affiche le contenu de ton Set via un JLabel(tonSet), visuellement tu passes bien une copie de référence a ton JLabel, mais Java appel implicitement la fonction toString() de ton Set, tu te retrouve donc avec un JLabel(tonset.toString()), ce n'est pas ton Set qui est affiché directement mais une chaine de caractère qui la représente et ton JLabel ne possède pas de référence vers ton Set mais vers l'objet String retourné par la fonction toString() de ton Set.
    Les méthodes revalidate() et repaint() n'actualisent pas le contenu de tes JPanels, mais redessine tes composants.

    Je n'ai pas ton code sous les yeux, mais il y a des chances que le problème soit la.

    Je te conseil de regarder du coté d'Observable/Observers, de nombreux exemples existe sur le web et réalisent ce que tu cherches a faire
    Dernière modification par Invité ; 30/09/2015 à 10h50.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    merci pour ta réponse, je fais donc quelques recherches et je reviens

Discussions similaires

  1. [XL-2003] Comment utiliser la fonction "Actualiser les données"
    Par P96O1004 dans le forum Excel
    Réponses: 10
    Dernier message: 27/05/2009, 14h05
  2. Réponses: 1
    Dernier message: 24/04/2006, 01h55
  3. comment modifier les données d'une table à travers un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 12
    Dernier message: 19/07/2005, 09h51
  4. [cr 8.5] comment exploiter les données d'un "array"
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 09/06/2005, 14h03
  5. [JTable] Comment récuperer les données d'un fichier texte ?
    Par Makunouchi dans le forum Composants
    Réponses: 2
    Dernier message: 03/05/2005, 16h37

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