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 :

Peut-on faire cela avec une JList et un AbstractListModel ?


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suède

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Peut-on faire cela avec une JList et un AbstractListModel ?
    Bonjour,
    Codant à mon travail en ASP.Net et C#, j'utilise énormément dans les contrôles utilisateur (combobox,listbox,...) les propriétés Value et Text en mettant par exemple l'ID dans la propriété Value et Id_Name dans la propriété Text.

    Ma question est de savoir si cela est possible en J2SE.
    J'emploie une JList pour afficher une liste récupérée à partir d'une BD. Du coup j'utilise un AbstractListModel pour convertir les tuples de ma BD dans un de mes objets métiers noté A. Or ce que je n'arrive pas à faire c'est afficher une string dans la Jlist(propriété 1 de mon objet A) tout en récupérant un Id typé en long (propriété 2 de mon objet A) lorsque je sélectionne un élément de cette JList.

    Je pourrais bien sûr à partir de cette string chercher dans mon modèle quel id est relié à cette string mais cela ne peut pas marcher car il se peut qu'il y ait plusieurs fois la même string.

    Merci dans tous les cas de votre aide

  2. #2
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    bonjour,
    je sais pas si j'ai bien compris la question,
    la JList délègue la gestion de l'affichage à un objet de type ListCellRenderer, et donc si tu créer ton propre afficheur tu peux afficher cette String comme ceci :
    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
    28
    29
    30
    31
    32
    33
    34
    35
     
    // Affiche une string pour chaque objet de la JList.
     
     class MyCellRenderer extends JLabel implements ListCellRenderer {
     
         // This is the only method defined by ListCellRenderer.
         // We just reconfigure the JLabel each time we're called.
     
         public Component getListCellRendererComponent(
           JList list,              // the list
           Object value,            // value to display
           int index,               // cell index
           boolean isSelected,      // is the cell selected
           boolean cellHasFocus)    // does the cell have focus
         {
     
             String s = (A)value.getPropriete1(); // recuperer la propriété String de ton objet A
             setText(s);
             // pour respecter l'affichage normal de la JList
             if (isSelected) {
                 setBackground(list.getSelectionBackground());
                 setForeground(list.getSelectionForeground());
             } else {
                 setBackground(list.getBackground());
                 setForeground(list.getForeground());
             }
             setEnabled(list.isEnabled());
             setFont(list.getFont());
             setOpaque(true);
             return this;
         }
     }
     
    // ensuite dans le code, on installe l'afficheur de cellules
     myList.setCellRenderer(new MyCellRenderer());
    voilà, j'espere t'avoir aidé
    Where is my mind

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suède

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    En fait j'ai trouvé la solution à mon problème tout seul et je suis trop bête de ne pas y avoir pensé plus tôt.
    Il suffisait de sauvegarder ma liste d'objets A dans mon AbstractListModel.
    J'ai surchargé la méthode GetElementAt(int index) pour renvoyer la propriété 1 d'un élément A sous forme de String.
    Et pour récupérer la propriété 2 (un ID typé en int ) toujours de ce même objet A, j'ai rajouté une autre méthode GetObjetA( int index2)

    L'index2 que je fournis en paramètre est récupéré lorsque je clique sur un élément de ma JList avec la propriété GetSelectedIndex().
    Comme cela même si j'affiche uniquement des String, je peux toujours me référer à tous les objets A de ma JList car tous ont un Index différent dans cette même JList

    Merci en tout cas d'avoir voulu m'aider

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/12/2013, 20h16
  2. problème avec une Jlist
    Par vince351 dans le forum Composants
    Réponses: 5
    Dernier message: 22/05/2007, 14h46
  3. icones avec une JList
    Par barbiche dans le forum Composants
    Réponses: 7
    Dernier message: 05/04/2007, 10h28
  4. [UBUNTU] Peut-on l'installer avec une disquette ?
    Par HumanTool dans le forum Ubuntu
    Réponses: 5
    Dernier message: 03/03/2007, 18h11
  5. Peut-on faire ceci avec Perl ?
    Par tagomago dans le forum Langage
    Réponses: 15
    Dernier message: 02/03/2007, 18h21

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