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 :

[Débutant]repaint un JPanel


Sujet :

AWT/Swing Java

  1. #1
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut [Débutant]repaint un JPanel
    Bonjour,
    j'ai un JPannel dans lequel j'affiche une JListe. Les éléments de la JList viennent d'une Enumeration donc les éléments peuvent changer. Je lis les élements de l'Enumeration dans la méthode paintComponent et les ajoute à la JListe. Comme ça ils sont affichés.

    Le problème est que je dois faire un appel explicite à repaint() (ou déplacer le fenetre) de l'instance de mon JPanem pour actualiser l'affichage. Comment faire pour que ça soit automatiquement repaint ?

    merci.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    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
    Points : 1 241
    Points
    1 241
    Par défaut
    Salut,
    dans ta methode d'ajout fait l'appel au repaint()
    (le repaint sert à redessiner la fenêtre et si tu as modifié ton panel, tu es obligé de le redessiner).Petite precision, quand tu deplace/redimensionne une fenetre elle appelle la methode repaint().

  3. #3
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    Le problème est que la Classe qui met à jour ce Enumeration n'a pas connaissance de l'interface graphique. Je ne peux pas appeler le repaint du JPanel quand j'ajoute un élément.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    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
    Points : 1 241
    Points
    1 241
    Par défaut
    il faut ajouter un listener et quand tu modifie ton noyau tu notifie le listener en applelant sa methode de gestion des evenements. Dit moi si tu as compris ce qu'il faut faire

  5. #5
    Membre régulier Avatar de Tex-Twil
    Inscrit en
    Avril 2004
    Messages
    447
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 447
    Points : 122
    Points
    122
    Par défaut
    tu veux dire que je dois ajouter un listener à mon JPannel.

    Me créer une custom ActionEvent

    et quand je met à jour mon Enumeration, instancier cet évenement ?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    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
    Points : 1 241
    Points
    1 241
    Par défaut
    Pas exactement.
    Tu dois te faire:

    1)une classe EnuEvent
    avec un champs Object source

    2)une Interface EnuListener avec une methode mettreAJourInterface(EnuEvent e)

    3)dans ton enum ajouter une methode addEnuListener(EnuListener l) qui definira ton champs EnuListener listener;

    4)La classe qui contient ton panel doit implementer EnuListener et la méthode :
    mettreAJourInterface(EnuEvent e){
    repaint()
    }

    5)quand tu creer ton enum a partir de ton interface du lui applique la methode
    addEnuListener(this);

    6)quand tu modifie ton enumeration, dans la methode ajout, tu fait:
    listener.mettreAjourInteface(new EnuEvent(this));


    Normalement c'est comme ça que l'on doit faire.
    PS: si j'ai oublié qqc merci de le dire

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    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
    Points : 1 241
    Points
    1 241
    Par défaut
    Rq: ceci est model conceptuel assez souvent utiliser et pour ton exemple, il peut être simplifier:

    1)une Interface EnuListener avec une methode mettreAJourInterface()

    2)dans ton enum ajouter une methode addEnuListener(EnuListener l) qui definira ton champs EnuListener listener;

    3)La classe qui contient ton panel doit implementer EnuListener et la méthode :
    mettreAJourInterface(){
    repaint()
    }

    4)quand tu creer ton enum a partir de ton interface du lui applique la methode
    addEnuListener(this);

    5)quand tu modifie ton enumeration, dans la methode ajout, tu fait:
    listener.mettreAjourInteface();

Discussions similaires

  1. [JPanel] paint, paintComponent et repaint ?
    Par Pill_S dans le forum Composants
    Réponses: 8
    Dernier message: 08/02/2013, 17h38
  2. pb repaint sur JPanel contenu dans un JScrollPane
    Par pcouas dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 12/03/2009, 12h27
  3. pb repaint() sur JPanel
    Par david06600 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 06/06/2007, 16h39
  4. Problème repaint JPanel
    Par anthony62 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 19/09/2006, 15h09
  5. JPanel et repaint()
    Par manouchka dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 14/07/2006, 10h15

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