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

Composants Java Discussion :

[SWING][VIDEO] Problème entre une JList et un JScrollPane


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 19
    Par défaut [SWING][VIDEO] Problème entre une JList et un JScrollPane
    Bonsoir à tous.

    Voici mon problème :

    J'ai un panel pouvant contenir plusieurs JList contenant des images.

    Pour un meilleur affichage, la JList est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setLayoutOrientation(JList.HORIZONTAL_WRAP);
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setVisibleRowCount(-1);
    Les JList sont contenus dans un JPanel avec pour layout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    panel.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
    Les JList s'empilent verticalement.

    Voici ce que donne en vidéo plusieurs JList :

    JList sans ScrollPane (youtube.com).

    Les images de la JList vont bien à la ligne lorsqu'on réduit la taille de la fenêtre, et remontent lorsque la fenêtre s'élargie.

    Il faut un JScrollPane car avec plusieurs JList, toutes ne sont pas visibles dans la fenêtre, il faudrait pouvoir scroller vers le bas.

    Je rajoute un JScrollPane.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JScrollPane scrollPane = new JScrollPane(panel);

    Cela fonctionne plutot pas mal, on peut scroller vers le bas quand il y a beaucoup de JList dans le panel, les images remontent si on agrandi la fenêtre, mais si on la réduit, les images ne descende plus. Et il n'y a aucun moyen de les faire descendre.

    Voici la vidéo montrant cela :

    JList avec JScrollPane (youtube.com)

    Comment faire pour qu'il n'y est pas cette scrollBar du bas qui apparaisse et que les images descendent à la ligne suivante comme dans la vidéo sans le ScrollPane ?

    Merci d'avance.

    Edit : vidéos sur youtube.com

  2. #2
    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,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JScrollPane scrollPane = new JScrollPane(panel,
      ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
      ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    "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.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 19
    Par défaut
    Merci, cela fonctionne dans le sens ou la scrollbar horizontale ne s'affiche pas et celle verticale s'affiche bien, mais le problème n'est pas résolu car la JList ne met pas ses cellules à la ligne comme elle le fait correctement sans la JScrollPane.

    La JList doit se comporter comme dans l'exemple de Sun : How to Use Lists, ListDialogRunner (Java Web Start).

    Voici une vidéo montrant comment fonctionne la JList de cet exemple : ListDialogRunner (youtube.com).

    Dans cet exemple il n'y aura jamais de scrollbar horizontale car la liste met ses cellules à la ligne lorsque la fenêtre se rétrécie en largeur, mais il y a bien une scrollbar verticale lorsque il n'y a pas assez de place pour afficher toutes les cellules.

    Avec le code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JScrollPane scrollPane = new JScrollPane(panel,
      ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
      ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    Ma JList réagi comme dans la vidéo avec JScrollPane, mais sans la scrollbar horizontale comme demandé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
    Les cellules de la JList remontent lorsque qu'on agrandit la taille de la fenêtre, mais ne met pas ses cellules à la ligne comme elle devrait le faire lorsqu'on réduit la largeur de la fenêtre, comme dans l'exemple ci-dessus.

    La vidéo montrant le problème sans scrollbar horizontale : JListAndScrollPaneWithoutHorizontal (youtube.com).

    Comment forcer la JList à mettre ses cellules à la ligne en ayant un JScrollPane ? Pourquoi cela fonctionne t il correctement sans le JScrollPane, et pas avec ?

    Est-ce un problème de JScrollPane ou de JList ?

    Edit : vidéos sur youtube.com

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 19
    Par défaut
    Des nouvelles :

    En mettant un ScrollPane directement sur la JList, les cellules vont bien à la ligne lorsqu'on réduit la largeur de la fenêtre.

    Vidéo : JScrollPaneOnJList (youtube.com).

    Le problème et qu'on ne voit plus entièrement toutes les cellules.

    Une solution serait de n'avoir qu'une seule JList comme dans l'exemple de Sun, mais comment distinguer les différentes images sans séparation... impossible.

    Donc mette un JScrollPane sur chaque JList ne résout pas le problème

    Encore une autre solution serait d'afficher une seule JList à la fois, avec son JScrollPane, et une comboBox pour choisir quelles listes d'images affichée, mais je n'aimerai pas en arriver là, SWING, tu dois pouvoir le faire

    Edit : vidéo sur youtube.com

  5. #5
    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
    Citation Envoyé par psicot
    En mettant un ScrollPane directement sur la JList, les cellules vont bien à la ligne lorsqu'on réduit la largeur de la fenêtre.
    Ah oui ! Ca y est je me souviens : JList (et JTable) implémentent l'interface Scrollable. C'est comme ça qu'ils arrivent à dire au JScrollPane qu'ils ne veulent scroller que verticalement.
    Donc pour faire ça avec toutes les JList, tu peux créer une classe qui hérite de JPanel et implémente l'interface Scrollable. Tu t'en sers pour mettre les JList dedans.
    "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.

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 19
    Par défaut
    Merci c'est exactement ce qu'il fallait

    Merci énormément !!

    Il reste surement à faire quelques réglages sur les fonctions implémentées mais cela fonctionne déjà très bien :

    Vidéo : JList JScrollPane (youtube.com).

    Merci encore, vous m'avez aidé à avancer dans mon projet !!!

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

Discussions similaires

  1. problème avec une JList.addElement
    Par mayya dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 30/12/2008, 15h31
  2. problème avec une Jlist
    Par vince351 dans le forum Composants
    Réponses: 5
    Dernier message: 22/05/2007, 14h46
  3. [SWING][VIDEO] Cellules d'une JList élastiques
    Par psicot dans le forum Composants
    Réponses: 1
    Dernier message: 20/03/2007, 10h49
  4. rafraichissement d'une JList dans un JScrollPane
    Par Nicool dans le forum Composants
    Réponses: 3
    Dernier message: 12/05/2006, 12h59
  5. [Swing] Remplir une JList
    Par james2001 dans le forum Débuter
    Réponses: 24
    Dernier message: 26/08/2005, 22h04

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