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 :

[jScrollPane contenant un JPanel] Pas de repaint lors du défilement.


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 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Par défaut [jScrollPane contenant un JPanel] Pas de repaint lors du défilement.
    Bonjour,
    Je souhaite afficher un JPanel assez grand, j'aimerais donc le mettre dans un JScollBar.
    J'ai bien la barre de défilement vertical, mais l'ennuie est que chaque fois que je l'utilise (en cliquant dessus avec la souris) le JPanel ne se "repaint" pas ce qui donne une impression d'imprimante qui étale sont encre partout.

    J'ai mis des MouseListener (et équivalent) partout ou je pouvais en demandant un repaint. En utilisant la molette de la souris, je n'est aucun soucis (l'évènement se produit bien)

    La question pourrait se poser comme ceci:
    Comment avoir un évent qui s'effectue lors de l'utilisation de la scrollBar?

    Une image pour illustrer mes propres:
    http://img341.imageshack.us/my.php?image=bugky4.jpg
    Merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    C'est pas un AdjustmentListener qui doit gérer ça plutôt qu'un MouseListener ? ...

  3. #3
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    on peut avoir du code qui nous montre comment tu initialises ton JScrollPane ? Parce qu'ajouter un Listener pour appeler repaint est loin d'être le plus rapide, normalement tu n'as pas besoin de faire ça.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Effectivement aucun besoin de faire cela.
    Montre donc

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Par défaut
    Le code est généré par NetBeans en grande partie. (interfaces graphiques)

    Avec des MouseDragged cela semble pouvoir fonctionner (il exécute l'event quand il faut), le problème semble venir du fait que j'ai créer la barre vertical moi même (à la bourrin). Je suppose (j'espère) qu'avec une barre vertical normal, cela devrait fonctionner. Mais lorsque je lui demande une barre Vertical, il ne se met pas à la taille de Panel, il se contente de le couper. :/

    Code de la barre Vertical déclaré à la main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(PanelPaye);
            PanelPaye.setLayout(jPanel1Layout);
           jPanel1Layout.setVerticalGroup(
                jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 850, Short.MAX_VALUE)
            );
    Code de la barre Vertical déclaré de façon plus "normal":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jScrollPane1.setVerticalScrollBarPolicy(jScrollPane1.VERTICAL_SCROLLBAR_ALWAYS);

    Si vous avez une solution qui évite de repaint sans arrêt (très couteux en ressource je trouve...) je suis preneur.

    Code du JscrollPane dans le constructeur de ma JFrame: (PanelPaye est ce qui est censé être affiché dans le scollPane, il étend la classe JPanel)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            jScrollPane1.setVerticalScrollBarPolicy(jScrollPane1.VERTICAL_SCROLLBAR_ALWAYS);
            jScrollPane1.setViewportView(PanelPaye);
            setVisible(true);
            jScrollPane1.setAutoscrolls(true);
    Si vous avez besoin d'avantages d'informations, n'hésitez pas!
    Merci d'avance.

  6. #6
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Alors pour l'histoire du coupage en deux, c'est peut-être une histoire de preferredSize ? Essaie toujours d'affecter une PreferredSize à ton JScrollPane.

    Pour en revenir à ton problème initial, c'est assez bizarre. Peux-tu essayer chacune des lignes suivantes séparément ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // soit :
    jScrollPane1.setViewportView(PanelPaye);
    jScrollPane1.setViewportBorder(null);
     
    // soit :
    jScrollPane1.setViewportView(PanelPaye);
    jScrollPane1.setViewportBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. [Swing] JPanel dans JScrollPane ça ne marche pas !
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 23/11/2010, 00h16
  2. JPanel dans un JScrollPane (qui ne défile pas bien)
    Par womannosky dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 11/02/2009, 09h16
  3. [JScrollPane][paint] pas de repaint
    Par wonderyan dans le forum AWT/Swing
    Réponses: 15
    Dernier message: 17/01/2006, 11h37
  4. [JPanel] quel méthode appelé lors du rafraichissement...
    Par lilou77 dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 01/11/2005, 15h08
  5. JPanel contenant deux JPanel definir taille de l un d eux
    Par mereyj dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/06/2005, 21h40

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