Salut à tous !
Je fais une petite IHM avec netbeans, rien de bien méchant.. En gros ça ressemble à un explorateur de fichiers avec à gauche un JTree et à droite un JPanel qui affiche un aperçu des images sélectionnées.. Mon problème, c'est que j'ai mis ce JPanel dans un JScrollPane et celui-ci ne s'adapte pas en fonction de la taille du JPanel.. Les barres de défilement ne s'affichent jamais ce qui limite l'intéret du JScrollPane ! J'ai le même problème avec le JTree mais j'arrive à bidouiller en remettant à jour le Viewport à chaque fois qu'un noeud est étendu/réduit. Voilà le code que j'ai tenté pour le JPanel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
//Code généré par netbeans
...
jScrollPane1 = new javax.swing.JScrollPane();
imageViewer = new javax.swing.JPanel();
...
imageViewer.setMinimumSize(new java.awt.Dimension(0, 0));
imageViewer.setPreferredSize(new java.awt.Dimension(0, 0));
jScrollPane1.setViewportView(imageViewer);
...
 
//Code exécuté lors du remplissage du JPanel :
 private void sessionsTreeValueChanged(javax.swing.event.TreeSelectionEvent evt) {                                          
        if(evt.getNewLeadSelectionPath() != null && (((DefaultMutableTreeNode)evt.getNewLeadSelectionPath().getLastPathComponent()).getUserObject().getClass()) == Session.class)
         {
            Session obj = (Session)(((DefaultMutableTreeNode)evt.getNewLeadSelectionPath().getLastPathComponent()).getUserObject());
            imageViewer.removeAll();
            for(int i=0 ; i<obj.getImages().size() ; i++)
            {
                if(obj.getImages().get(i).isImageFile())
                    imageViewer.add(obj.getImages().get(i));
            }
            imageViewer.repaint();
            imageViewer.setPreferredSize(imageViewer.getSize());
            imageViewer.revalidate();
        }
    }
Malgré les appels que j'ai rajouté, setPreferredSize() et revalidate(), les barres de défilement ne s'affichent jamais.. En fouillant sur le net j'ai vu que tout le monde se contentait d'instancier le JScrollPane avec comme argument son contenu.. Dans la doc Java ils disent que l'instanciation "à vide" puis le setViewportView est strictement équivalent à ça.. Ou est le problème alors ?
Merci de votre aide !!