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

AWT/Swing Java Discussion :

reinitialiser un composant graphique


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 53
    Par défaut reinitialiser un composant graphique
    Bonjour,

    J ai une fenetre avec plusieurs composants graphiques dedant (splitpanes, canvas, panels, etc) pour faire de la visualisation. L utilisateur rentre des parametres pour avoir sa visualisation. Mon probleme est que s il veut reinitialiser les composants (ou charger une configuration), je n arrive pas a reinitialiser ces composants graphiques.

    Je ne veux pas passer par chaque composant et ecrire une fonction reset() pour chacun (j en ai beaucoup), mais plutot reappeler le constructeur pour avoir les parametres par defaut.

    Tout se passe bien niveau calculs, sauf pour le reaffichement: les 2 types de composants (ceux du depart et ceux apres avoir rappele le constructeur) sont affiches en meme temps, et seuls le 1er type prend en comptes les evenements.

    Comment faire pour ecraser les anciens composant. J ai essaye setVisible(), Validate(), ValidateTree(), addNotify(), etc, mais rien ne marche.
    J ai regarde quelques tutos sur les Peer, mais est ce que ca vient de la?
    Y a t il une autre fonction a appeler, un buffer a vider, ou ma methode est elle simplement mauvaise?

    Merci pour votre aide,

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pour retirer un composant d'une fenetre: remove(component) ou meme carrément removeAll(), ensuite tu y replace tes composants tous frais nouveaux.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 53
    Par défaut
    ca marche parfaitement !

    Donc pas de fonction de rafraichissement comme je l aurai souhaite, mais bon...
    Je n avais pas pense a cette solution, mais ca marche .

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 83
    Par défaut
    un repaint n'aurait pas suffit ?

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    effectivement, j'ai lu d'après le premier post que toute ta fenetre devait changer, retour des splitpanes à leur place par défaut, etc, d'ou ma suggestion du removeAll, new, add mais comme mentionné, si tu change juste les donnée surlequelles les composant lisent, un repaint() aurait suffit à afficher les nouvelle données.

    Le plus "propre" est généralement d'utiliser correctement le mvc et de mettre à jour les modèles de chaque composant.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 53
    Par défaut
    tchize_
    effectivement, j'ai lu d'après le premier post que toute ta fenetre devait changer, retour des splitpanes à leur place par défaut, etc, d'ou ma suggestion du removeAll, new, add mais comme mentionné, si tu change juste les donnée surlequelles les composant lisent, un repaint() aurait suffit à afficher les nouvelle données.
    non un repaint seul ne marchait pas, je voulais bien que toute ta fenetre change, (retour des splitpanes à leur place par défaut). Et comme il y a beaucoup de composants imbriques les uns dans les autres, cette solution est bien adaptee je pense...

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

Discussions similaires

  1. Composant graphique multiple (ou dérivé d'un TFrame)
    Par Jean Bovet dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/04/2007, 18h57
  2. [Composant Graphique] List Box "synchronisés"
    Par Raideman dans le forum C++Builder
    Réponses: 9
    Dernier message: 03/11/2006, 19h50
  3. Activer et désactiver des composant graphiques?
    Par redabadache3 dans le forum Débuter
    Réponses: 1
    Dernier message: 16/08/2005, 17h50
  4. Palette de composant graphique
    Par kastor111 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 08/07/2005, 15h04
  5. Composant graphique
    Par Rodrigue dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/12/2004, 20h03

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