Récupérer texte JList

Signaler
Messages postés
34
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
5 juillet 2007
-
soyonsami
Messages postés
34
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
5 juillet 2007
-
Bonjour,
je vous explique mon souci :

j'ai une JListe que j'ai appellé ListeChoix
ListeChoix récupere les informations contenues dans un arraylist (tab : qui contient des données récupérés depuis une bdd)
J'affiche ListeChoix dans un JScrollPane

...
ListeChoix = new JList(tab);
...
jspScrollListe = new JScrollPane(ListeChoix);
...

Je voudrais récupérer dans une variable 'a' de type string le texte que je selectionne ( a l'aide de la souris une fois le programme lancé ) dans ma JListe, pour cela j'ai fait ca:

String a = ListeChoix.getSelectedValues().toString();
System.out.println(a);

> je lance le programme en debug, je selectionne un élément de ma Liste ( "Largeur" )
En mode debug le println me renvoie : " [Ljava.lang.Object;@182a70 "

Donc dans ma variable  ' a '  il n'y a pas le texte de l'élément selectionné mais un nom identifiant de java je suppose...
Ma question est donc : Comment récupérer le texte selectionnée dans ma JList

Merci à tous de vos futures réponses

4 réponses

Messages postés
492
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
16 mai 2007
9
Salut.
Ce que tu fais n'est pas bon puisque tu récupères un tableau des items sélectionnés.
Il faut donc, si tu ne sélectionne qu'un item, utiliser la méthode getSelectedValue().
De plus, il faut faire un cast.
String a = ListeChoix.getSelectedValue();
System.out.println((String)a);

A+
Messages postés
34
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
5 juillet 2007

Merci,

j'ai repris ton code et fais le cast,
cependant en mode débug, je sélectionne un item de ma jlist mais cela m'affiche " null " avec le   System.out.println((String)a);

Aurais tu une explication?

Merci :)
Messages postés
492
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
16 mai 2007
9
Oups, je me suis peut-être trompé. Ca donnerait plutôt :
String a = (String)ListeChoix.getSelectedValue();
System.out.println(a);
De plus, cette méthode retourne null quand rien n'est sélectionné...
C'est donc que tu n'avais rien sélectionné !
Messages postés
34
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
5 juillet 2007

Bonjour,
Ton code marche mais dans mon cas il semblerait que cela ne fonctionne pas a 100%, je viens d'identifier l'origine de mon probleme, je t'explique

//DECLARATION
String[] tab = new String[280];
DefaultTableModel modell = new DefaultTableModel();
 JTable table = new JTable(modell);
 Object tab1[] = {""};
 Object tab2[] = {""};
 Object tab3[] = {""};
 Object tab4[] = {""};
 Object tab5[] = {""};
tab1 = new Object[20];
  tab2 = new Object[20];
  tab3 = new Object[20];
  tab4 = new Object[20];
  tab5 = new Object[20];
//  Ajout des colonnes
  modell.addColumn("Champs", tab1);
  modell.addColumn("Contrainte", tab2);
  modell.addColumn("Valeur", tab3);
  modell.addColumn("Contrainte", tab4);
  modell.addColumn("Valeur", tab5);
//+déclaration des jscrollpane etc...

Je dois charger dans ma JList tous les champs de plusieurs Tables d'une BDD ( le chargement fonctionne )  :

//PERMET DE CHARGER/AFFICHER LES TABLES/JLIST
public void plip(String Nom)
 {     
     try {  AppliParent.Controller.chargerListeRequeteur(Nom);} //Fonction permettant de récupérer les éléments grace à une requete SQL -> OK
     catch (GrapheNavigateurException e1) {
         if(e1.getReason()==GrapheNavigateurException.NO_GRAPHE_FOUND_EXCEPTION)
             System.err.println(e1.getMessage());
      e1.printStackTrace();
      return; } 
  // On Récupere chacun des champs que l'on stocke dans un tableau de String tab
  ArrayList M=AppliParent.Model.getListeTable();  
   for(int i=0;i<M.size();i++)
   {         
   tab[i+j+1]=M.get(i).toString();  
   }
   //AFFICHAGE de la JList
   ListeChoix = new JList(tab);
   jspScrollListe = new JScrollPane(ListeChoix);
   jspScrollListe.setSize(180, 340);
   jspScrollListe.setLocation(1, 1);
   jspScrollListe.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
   jspScrollListe.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
   this.add(jspScrollListe);
   ListeChoix.setVisibleRowCount(5);
   repaint();
}

--> lorsque je demande le chargement d'une seule table et que je veux récupérer le texte grace a ton code cela fonctionne
public void btnValider_actionPerformed(ActionEvent Event)

PERMET DE LANCER L' AFFICHAGE
 public void btnValider_actionPerformed(ActionEvent Event)
 {
      plip("table1");
  }

-->lorsque je rentre des éléments "en dur" dans ma JList et que je récupere le texte grace a ton code cela fonctionne
Par exemple : String[] aaab=  {"001,"002",.........................................};

Mais --> Lorsque je demande le chargement de plusieurs tables dans ma JListe, la récupération du texte ne fonctionne plus! ( cela ne vient pas d'une saturation de la JList car j'ai essayé de rentré en dur plus d'élements que ceux chargés depuis les tables et ca marchait... )
 public void btnValider_actionPerformed(ActionEvent Event)
{
      plip("table1");
      plip("table2"); //=> chargement de 2 tables = la récup + copie du texte ne  fonctionne plus
 }

voila la fonction qui permet de récupérer le texte selectionné dans la JList et de copier dans le tableau
public void CopieText_actionPerformed(ActionEvent Event)
 {
     String a = (String)ListeChoix.getSelectedValue();
     modell.setValueAt(a,2,2);
}

=> donc avec un chargement d'une seule table ou avec ajout d'éléments rentrés en dur la récup + copie du texte fonctionne MAIS si je charge plusieurs tables dans ma JList, la récup du text et copie ne marche plus ( bien sur l'affichage dans ma JList lui fonctionne... )

Merci beaucoup de ton aide ;)