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 :

[JList] Afficher les éléments sélectionnés d'un JList dans un JTable


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Points : 21
    Points
    21
    Par défaut [JList] Afficher les éléments sélectionnés d'un JList dans un JTable
    Bonjour à tous,

    J'ai une JFrame avec un composant JList et un JTable.

    Je voudrais faire en sorte que lorsque l'utilisateur sélection 1 ou plusieurs éléments de la JList, les éléments en question soient affichés dans une cellule du tableau. Pour l'instant, je n'arrive à afficher qu'un seul élément sélectionné même quand l'utilisateur en sélection plusieurs.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    liste = new JList(stockage_parametre2);		
    liste.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    liste .setVisibleRowCount(-1);
    liste.addListSelectionListener(new ListAction1());
    Remarque : stockage_parametre1 est un Vector qui me permet de récupérer des données de ma base de données.

    Voici l'écouteur de ma liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class ListAction1 implements ListSelectionListener {
    		@Override
    		public void valueChanged(ListSelectionEvent arg0) {
     
    			Object[] item_selectionnes=liste.getSelectedValues();
    			for(int i =0;i<item_selectionnes.length;i++)
    			{
    				table.setValueAt(item_selectionnes[i] , 0, 0);
    			}
    		}
    	}
    Auriez vous une idée de comment afficher dans la cellule plusieurs éléments qui auraient été sélectionnés ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    dans ta boucle, tu défini toujours la meme cellule. tu dois soit utiliser des cellules différentes (si c'est ce que tu veux faire), en utilisant setValueAt(item[i],i,0) par exemple. Soit, si tu veux tout dans la meme cellule, tu dois construire une string qui est la concaténation de tout, toi meme et la mettre dans la cellule. Ou alors utiliser une ArrayList comme value de la cellule et utiliser un TableCellRenderer qui gère les ArrayList à l'affichage. Bref, y a du choix, mais faut un peu d'huile de coude.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    La concaténation sera peut être ce qu'il y a de plus rapide. Mais étant donné que je récupère les éléments sélectionnés dans un tableau, comment les concaténer dans ma boucle for ?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Tu fait un new StringBuffer avant le for, tu ajoute (append()) pendant le for, et à la fin tu appelle toString()

    edit: mieux, utilise Stringbuilder, légèrement plus performant :p

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Merci tchize_!

    J'ai utilisé le Stringbuilder, c'est facile à utiliser finalement.


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

Discussions similaires

  1. Réponses: 13
    Dernier message: 21/05/2012, 15h46
  2. Réponses: 1
    Dernier message: 15/01/2011, 05h51
  3. Réponses: 1
    Dernier message: 28/08/2008, 22h37
  4. Réponses: 2
    Dernier message: 05/05/2007, 17h37
  5. Réponses: 2
    Dernier message: 27/12/2005, 20h09

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