[java] une liste d'objets dans une JComboBox

Résolu
moussecp Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -  
moussecp Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 58 Date d'inscription   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 58 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup !
ça fonctionne nickel
0