2016-10-28 1 views
0

J'essaie comme il est dit le titre, pour obtenir l'élément sélectionné sur un JList et l'ajouter à la seconde JList lorsque j'appuie sur un bouton :J'ai une erreur quand j'essaie de getSelectedValue() d'un JList à un autre JList

btnAdd.addActionListener(new ActionListener(){ 

      public void actionPerformed(ActionEvent arg0) { 


list_1.addElement(list.getSelectedValue()); 

}}); 

Alors, quand j'écris que, AddElement il me demande de jeter list_1 à un Object, qui ressemble à ceci, becasue de cette erreur:
enter image description here

Puis après avoir ajouté le casting comme me demande de, j'ai eu la même erreur comme si je n'a rien ajouté.

Donc, ma question est, comment puis-je ajouter quelque chose d'un JList à un autre JList en appuyant sur un bouton? Et si je vais avoir les mêmes problèmes pour supprimer le dernier élément ajouté, ou l'élément selected, s'il vous plaît laissez-moi savoir comment l'éviter.

Le code complet:

JList list = new JList(); 
scrollPane.setViewportView(list); 
list.setModel(new AbstractListModel(){ 
    String[] values = new String[] {"Aceite de oliva", "Aceitunas negras", "Aceitunas verdes", "Albahaca", "Alcachofa", "Anchoas", "Berenjena", "Cebolla", "Cereza", "Champiniones", "Durazno", "Harina de garbanzo", "Huevo", "Jam\u00F3n", "Jam\u00F3n serrano", "Ma\u00EDz", "Morr\u00F3n rojo", "Morr\u00F3n verde", "Or\u00E9gano", "Palmitos", "Pi\u00F1a", "Queso cheddar", "Queso crema", "Queso gorgonzola ", "Queso muzzarella", "Queso parmesano", "Salame", "Tomates", "Tomillo"}; 

    public int getSize() { 
     return values.length; 
    } 

    public Object getElementAt(int index) { 
     return values[index]; 
    } 
}); 

list.setToolTipText(""); 
list.setBackground(Color.LIGHT_GRAY); 

JScrollPane scrollPane_1 = new JScrollPane(); 
scrollPane_1.setBounds(373, 28, 184, 257); 
contentPane.add(scrollPane_1); 

JList list_1 = new JList(); 
list_1.setModel(new AbstractListModel() { 
    String[] values2 = new String[] {"", "", "", "", "", "", "", "", ""}; 
    public int getSize() { 
     return values2.length; 
    } 
    public Object getElementAt(int index) { 
     return values2[index]; 
    } 
}); 

list_1.setBackground(Color.LIGHT_GRAY); 
scrollPane_1.setViewportView(list_1); 

enter image description here

J'ai visité beaucoup de sites Web avec différents types de listes/modèles, et que je ne comprends pas comment utiliser JList s je ne pourrais pas pas comprendre ce que je fais mal.

Répondre

3

Vous devez ajouter le Object au DefaultListModel du JList. Vous pouvez utiliser la méthode addElement(...) de DefaultListModel.

i really don't get how to use JLists

Lisez la section du tutoriel Swing sur How to Use Lists pour les bases de JList. Le bouton "Hire" de l'exemple ListDemo vous montrera comment procéder. Il utilise la méthode insertElementAt(...) mais le concept est le même.

+0

oui, mais le problème que j'ai lors de la visite d'autres sites est qu'ils ont un nom pour appeler le modèle, je ne sais pas, par défaut, j'ai cliqué sur la liste J et l'ai déplacé au bon endroit, éclipse de Method of AbstractListModel, mais je ne sais pas comment l'appeler. BTW: Je cite ce que le site que vous m'avez donné dit: listModel.insertElementAt (employeeName.getText(), index); En imaginant bien que je peux faire cette partie, ne dois-je pas changer quoi que ce soit, exactement comme il est (sauf ajouter l'objet au defaultListModel)? –

+0

Je vous ai suggéré d'utiliser la méthode 'addElement()'. Il ajoute simplement l'objet à la fin du modèle. Le 'insertElementAt (...)' est seulement si vous voulez ajouter l'objet à une position spécifique. Je me fiche des autres sites. Le lien tutotorial a un exemple de travail complet. Alors structurez votre code comme l'exemple et vous n'aurez pas de problème. – camickr

+0

Ok, j'ai fait ceci: list_1.addElement() = list.getSelectedValue(); Mais maintenant je reçois une nouvelle erreur: "Le côté gauche d'une affectation doit être une variable" Je veux dire, je crois que list_1 c'est une variable, donc je ne reçois pas le problème à nouveau –