JList - inserir Elementos

4 respostas
O

Quero inserir elementos numa JList e primeiro gostava de saber se é assim que tenho de transformar a minha HashMap de forma a ficar com os elementos organizados para inserir na JList

public class Biblioteca;

HashMap mapItemMultimediaCD = new HashMap();
Collection collectCD = mapItemMultimediaCD.keySet();
ArrayList listaCD = new ArrayList();
Iterator itCD = collectCD.iterator();

public ArrayList getCds(){
        while(itCD.hasNext()){
            Object elem = itCD;
            listaCD.add(((Cd)elem).getArtista() + ((Cd)elem).getTitulo());
                }
        return listaCD;
            }

Desta forma espero passar o conteúdo de listaCD para uma JList (chama-se JList2 )que está implementada numa JFrame chamada

public class Interface;

gostaria de usar o JList2.setListData();

A minha class interface:

public Interface() {
        initComponents();
        DefaultListModel modelListCds = new DefaultListModel();
        jList2.setModel(modelListCds);
        jList2.getModel().addListDataListener(new ListDataListener() {
            public void contentsChanged(ListDataEvent e) {
                System.out.println(jList2.getSelectedValue().toString());
            }
            public void intervalAdded(ListDataEvent e) {
            }
            public void intervalRemoved(ListDataEvent e) {
            }
        });
   jList2.addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent e) {
                if (!e.getValueIsAdjusting()) {
                    if ("Cds".equals(jList2.getSelectedValue().toString())) {
                        setCdsToJList();
                    }
                }
            }
        });
    }
    public void setCdsToJList() {
        jList2.setModel(new DefaultListModel());
        DefaultListModel modelList = new DefaultListModel();
        ArrayList tmpArtistas = bib2.getCds();
        for (int i = 0; i < tmpArtistas.size(); i ++) {
            modelList.addElement(tmpArtistas.get(i));
        }
        jList2.setModel(modelList);
    }

Obrigado pela ajuda, abraço.

4 Respostas

ViniGodoy

A classe ArrayList possui um construtor de cópia. Assim você pode fazer:

Map mapItemMultimediaCD = new HashMap(); List listaCD = new ArrayList(mapItemMultimediaCD.keySet());

Isso evita o iterator.
Uma dica, sempre referencie as classes de collections por suas interfaces, não pela implementação concreta. Assim:

use:

Map map = new HashMap(); List list = new ArrayList(); Set set = new HashSet();
Ao invés de:

HashMap map = new HashMap(); ArrayList list = new ArrayList(); HashSet set = new HashSet();

Isso permite que vocë troque a implementação do tipo de lista (por exemplo, de ArrayList para LinkedList ou de HashSet para TreeSet) sem alterar o seu código. Também permite que você faça um proxy da lista em algumas situações, como quando você quer fazer um debug ou deixar a lista sincronizada.

D

Sei que esse tópico foi encerrado faz um tempo, mas é exatamente o que preciso.
Tenho 40 mil registros em banco: ID, Nome, endereco, telefone.
Gostaria já no início do programa carregar todos os dados em um HashMap para ser mais rápido a consulta (realmente preciso que seja the flash).

Agora preciso pegar todos os dados de HashMap e colocar em um JList.

Você poderia me passar detalhes desse seu código?

Abs

R

qual a duvida realmente…?

é só fazer um while e jogando no map oO

D

redr4gon:
qual a duvida realmente…?

é só fazer um while e jogando no map oO

Preciso jogar esses valores em um JList.

Criado 13 de dezembro de 2006
Ultima resposta 13 de nov. de 2011
Respostas 4
Participantes 4