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

  1. #1
    Membre à l'essai
    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
    Points : 24
    Points
    24
    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 chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

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

  3. #3
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    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 du Club
    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
    Points : 66
    Points
    66
    Par défaut
    Effectivement aucun besoin de faire cela.
    Montre donc

  5. #5
    Membre à l'essai
    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
    Points : 24
    Points
    24
    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 émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    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.

  7. #7
    Membre à l'essai
    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
    Points : 24
    Points
    24
    Par défaut
    J'ai essayer d'affecter le PreferredSize, étrangement cela ne change rien, quelque soit la dimension que je lui affecte ... (même avec du 1600,1600)
    Idem pour le setSize.

    Chose étrange aussi, le getPreferredSize et le getSize de "PanelPaye" retourne un objet nul :/

    Pour ce qui est des lignes que tu proposes, je les est testé séparément, dans le constructeur ou même dans un évent, mais je n'est pas vus de différence.

    Pour ce qui est de la barre vertical, je pense pouvoir m'en occuper puisque je peut décider de sa taille. Je l'adapterais donc au Panel. Mais j'ai toujours cet horrible problème d'encre noir .....

  8. #8
    doc
    doc est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Août 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 85
    Points : 415
    Points
    415
    Par défaut
    Ayant eu le même problème, j'ai cherché une solution. Il suffit en fait d'utiliser la méthode PaintComponent pour le Panel, au lieu de paint.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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