[java] une liste d'objets dans une JComboBox

Résolu/Fermé
moussecp Messages postés 56 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 10 mai 2012 - Modifié par moussecp le 12/08/2011 à 14:38
moussecp Messages postés 56 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 10 mai 2012 - 12 août 2011 à 16:02
Bonjour, c'est encore moi.


Cette fois-ci je souhaiterais générer une JComboBox avec des objets en guise d'éléments.

Dans mon cas, j'ai une liste d'éléments de type "Date" :
List<Date> FavoritesList = new ArrayList();


Je sais que lorsque je décide d'afficher une date de la manière d'un affichage de String avec :
System.out.println(FavoritesList.get(index));
on m'affiche une jolie date sans problème. Donc je me dis que je pourrais faire la même chose dans mon JComboBox.


De plus, j'utilise NetBeans, donc je ne suis pas 100% libre de mes mouvements. En créant une JComboBox, il me génère automatiquement les ligne suivantes :
     
          private javax.swing.JComboBox FavoritesComboBox;       
          ...   
          FavoritesComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Element 1", "Element 2", "Element 3" }));   
          FavoritesComboBox.setName("FavoritesComboBox");   
Ce qui fonctionne parfaitement.



Or moi en essayant ceci :
         
          FavoritesComboBox.setModel(new javax.swing.DefaultComboBoxModel(FavoritesManager.getComboBoxFavoritesList()));   
          FavoritesComboBox.setName("FavoritesComboBox");   


où getComboBoxFavoritesList() est une méthode qui me retourne FavoritesList définit ci-dessus... Bah ça fonctionne pas.


J'ai passé la journée sur internet à éplucher des documentations pour trouver des réponses mais là je commence à désespérer. =/


Je note par exemple que sur la documentation de DefaultComboBoxModel
http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/DefaultComboBoxModel.html
un des constructeurs gère les objets... Donc je ne comprends vraiment pas où est le problème.

Merci pour votre aide.


Une signature ? Pas besoin de signature.
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 12/08/2011 à 14:56
1) Il faudrait préciser le type Date dans ton initialisation de liste (remarque : vu ce que tu veux faire, il peut être plus intéressant d'utiliser une LinkedList)

List<Date> FavoritesList = new LinkedList<Date>();

2) DefaultComboBoxModel prend en paramètre un tableau or toi tu lui fourni une liste !
Tu dois d'abord construire un tableau avant de le passer en paramètre...

Date[] tab = FavoritesList.toArray(new Date[FavoritesList.size()]); 
DefaultComboBoxModel def = new DefaultComboBoxModel(tab); 
FavoritesComboBox.setModel(def);

La confiance n'exclut pas le contrôle
2
moussecp Messages postés 56 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 10 mai 2012
Modifié par moussecp le 12/08/2011 à 15:33
Haha, tu es modérateur désigné Java ou quoi ? :) Toujours au taquet pour répondre à mes questions.

Quoi qu'il en soit, j'ai en effet modifié ma définition de FavoritesList et j'ai fait la modification en Array en copiant/collant tes lignes. Cependant on me renvoi l'erreur suivante pour la ligne 1 :
illegal forward reference

1     private DefaultComboBoxModel dcbm = new DefaultComboBoxModel(ArrayOfFavorites); 
      
2     private Date[] ArrayOfFavorites = FavoritesManager.getComboBoxFavoritesList().toArray(new Date[FavoritesManager.getComboBoxFavoritesList().size()]);  
.... 
3     FavoritesComboBox.setModel(dcbm); 
    
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
12 août 2011 à 15:48
Je ne suis ni modérateur, ni particulièrement spécialisé en Java... Mais j'aide autant que je peux ;-)

Pour ton problème, je pense que tu devrais permuter les lignes 1 et 2.
En effet tu déclares dcbm en l'initialisant avec ArrayOfFavorites qui n'est pas encore déclaré...
D'ailleurs dans mon code tab était bien déclaré avant def, c'est donc une erreur de copier-coller ^^
0
moussecp Messages postés 56 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 10 mai 2012
12 août 2011 à 16:02
merci beaucoup !
ça fonctionne nickel
0