Domanda

Ho un LinkedHashMap<String,Object> e si chiedeva che cosa il modo più efficace per mettere la parte String di ciascun elemento del LinkedHashMap in un JList.

È stato utile?

Soluzione

È anche possibile utilizzare il setListData (Vector) metodo :

jList1.setListData(new Vector<String>(map.keySet())); 

Con ciascuno dei metodi setListData, Stai facendo una copia dei dati reali, in modo da modificare la mappa non si rifletteranno nella lista. Si potrebbe invece creare un personalizzato ListModel passarlo al metodo setModel invece, ma poiché non v'è alcun modo per accedere ad un elemento arbitrario di un LinkedHashMap per indice, questo è probabilmente fattibile.

Altri suggerimenti

Se il JList non è sensibile ai cambiamenti della mappa originale, il metodo originale che hai utilizzato va bene (meglio che usare vettore, che ha l'ulteriore livello di sychronization).

Se si desidera JList a cambiare quando la mappa cambia, allora si dovrà scrivere il proprio ListModel (che non è così difficile). Avrete anche per capire come sapere quando la mappa modifiche.

Abbiamo trovato questo modo per farlo solo dopo che ho risposto alla domanda, ho pensato di metterlo qui per la comunità. Credo che questo sia il modo più efficace per farlo fare, ma sono certamente aperto a ulteriori suggerimenti.

jList1.setListData(LinkedHashMap.keySet().toArray());
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top