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] Cellules d'une JList élastiques


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    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
    Points : 19
    Points
    19
    Par défaut [SWING][VIDEO] Cellules d'une JList élastiques
    Bonsoir à tous !

    J'ai une JList contenant des images.

    L'affichage se comporte de la même manière qu'une fenêtre d'un système d'exploitation contenant des icônes.

    Les images vont à la ligne lorsque la fenêtre contenant la JList est réduite. Les images remontent lorsque la fenêtre est agrandie.

    Exemple en vidéo :

    JList avec images (youtube.com).

    Ce que j'aimerai faire avec Swing, c'est que l'espace en largeur entre les cellules de la JList varie en fonction de la largeur de la fenêtre.

    C'est à dire qu'en élargissant la fenêtre, que l'espace entre les images s'agrandit jusqu'à ce qu'une autre image puisse être affichée sur la même ligne.

    Voici en vidéo ce que j'aimerai que ma JList fasse :

    C'est le logicie iPhoto sous Mac Os X, codé probablement en Obj-C et pas en Java

    iPhoto (youtube.com).

    Que dois-je faire pour reproduire se comportement avec Swing et ma JList ?

    Est-ce possible ?

    Merci d'avance.

  2. #2
    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,

    étant donné que les cellules de la JList font toutes la même taille, le plus intéressant est de passer par les méthodes setFixedCellWidth/Height. Donc il faut mettre un ComponentListener qui connaisse la taille de base des images.

    Lorsque la JList est redimensionnée (componentResized) le ComponentListener calcule combien de cellules peuvent rentrer dans une ligne, et calcule ensuite la largeur de chaque cellule, et appelle setFixedCellWidth.

    Enfin, il faut que le ListCellRenderer soit capable de gérer le cas où la cellule est plus grande que l'image. En passant par un JLabel avec ImageIcon ça devrait marcher. En passant par paintComponent il faudra faire un ou deux petits calculs.

    [EDIT]A la base, l'idéal serait de modifier le layout, mais à ma connaissance on ne peut pas le faire pour une JList à moins de redéfinir la ListUI, ce qui n'est pas donné. C'est donc un petit truc pour contourner le problème.

Discussions similaires

  1. [Swing] retour à la ligne dans une Jlist
    Par Joccd dans le forum Composants
    Réponses: 7
    Dernier message: 19/02/2010, 13h49
  2. Insérer un JTextArea dans la cellule d'une JList
    Par a+polux dans le forum Débuter
    Réponses: 4
    Dernier message: 12/02/2010, 17h17
  3. [SWING] Comment formater une cellule d' une JTable ?
    Par Hamdi Hedhili dans le forum Composants
    Réponses: 6
    Dernier message: 23/12/2008, 14h59
  4. Réponses: 5
    Dernier message: 19/03/2007, 15h32
  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