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 :

le repaint() marche une fois sur deux


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut le repaint() marche une fois sur deux
    salut à tous je renccontre un problème avec le repaint en effet quand je rajoute un composant le repaint ne marche pas(je dois modifier la taille de la fenêtre pour repaindre le panneau), mais quand je le retire le panneau est redessiner
    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    		public void stateChanged(ChangeEvent e) {
    			int value = (Integer)((JSpinner)e.getSource()).getValue();
    			if(value > staff.getComponentCount()-1){
    				Portee portee = new Portee(value);				
    				this.staff.add(portee,value);				
    			}//if
    			if(value < staff.getComponentCount()-1){
    				this.staff.remove(value+1);				
    			}//if	
    			staff.repaint();
    		}
    Remarque staff est un JPanel et Portee hérite de JPanel.
    Deplus les Portee sont bien ajoutées et supprimées.
    Seul problème le rapaint() ne marche pas quand on ajoute un composant pourquoi ? Et comment resoudre le problème
    Merci d'avance

  2. #2
    Membre éclairé Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Par défaut
    et en rajoutant un JFrame.pack() ou JFrame.validate() ?

  3. #3
    Membre éprouvé Avatar de sylviadesbois
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Par défaut
    je suppose que tu a essayé staff.validate() ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut
    ça marche très bien le validate merci mais pourquoi ?

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    Tout simplement : cf. JavaDoc JFrame :

    validate

    public void validate()

    Validates this container and all of its subcomponents.
    The validate method is used to cause a container to lay out its subcomponents again. It should be invoked when this container's subcomponents are modified (added to or removed from the container, or layout-related information changed) after the container has been displayed.

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut
    d'accord mais quand je supprimer le composant je n'avais pas besoins de valider.
    Est-ce parceque le composant supprimer n'a pas besoins d'être valider vu qu'il est supprimer ?
    RQ: j'utilise un gridLayout
    En tous cas merci à tous les deux d'avoir répondu si vite à mon petit problème

  7. #7
    Membre éprouvé Avatar de sylviadesbois
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Par défaut
    Grosso merdo

    Un repaint ne lancera que les opérations de dessin (c'est à dire l'appel à paint et par là même à paintComponent)

    Un validate ou revalidate va déclencher par contre un revalidation complète du composant c'est à dire qu'il va recalculer le layout, donc redimensionner tous les composants fils et les replacer, puis lancer un paint et ainsi de suite.
    j'ai trouvé ça dans les archives du forum. http://www.developpez.net/forums/sho....php?p=2364086

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

Discussions similaires

  1. Pb de requête qui marche une fois sur deux
    Par emulamateur dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 26/04/2011, 16h45
  2. NamedQuery qui marche une fois sur deux
    Par Damascus06 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 06/12/2010, 15h41
  3. Réponses: 3
    Dernier message: 29/01/2009, 10h45
  4. Fermer une fenetre : ça marche une fois sur deux
    Par floanne dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 29/05/2007, 13h27
  5. Pb : malloc qui marche une fois sur deux .... ?
    Par guillaume_pfr dans le forum C
    Réponses: 14
    Dernier message: 21/07/2003, 09h52

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