Item sobrepondo em cima do outro no JList

3 respostas
douglasca86

Fala pessoal blz??

estou com problema de listagem no JList

public void adicionaCurso(){
       DefaultListModel listmodel = new DefaultListModel();
       JList lista = new JList(listmodel);
       listmodel.addElement(jTDescrição.getText());
       jListCursosOfer.setModel(listmodel);
    }

Acontece que quando eu digito um item no jTDescrição (jTextField) e clico em Adicionar no JButton, ele insere no jListCursosOfer. blz, mas quando adiciono um outro item, ele não joga embaixo ,ele sobrepõe no ultimo item que escrevi.
vcs podem dar uma força e resolver este problema??
Abrçs!!!

3 Respostas

ViniGodoy

Veja o que você fez:

public void adicionaCurso(){ DefaultListModel listmodel = new DefaultListModel(); //Aqui vc cria um model novo, e vazio JList lista = new JList(listmodel); //Aqui vc inutilmente cria um JList associado a esse model. listmodel.addElement(jTDescrição.getText()); //Aqui vc adiciona um único elemento ao model vazio jListCursosOfer.setModel(listmodel); //Aqui vc troca o model da list offer pelo model com esse único elemento }

E o que você deveria ter feito:

public void adicionaCurso(){ DefaultListModel listmodel = (DefaultListModel)jListCursosOfer.getModel(); //Aqui vc pega o model que já está associado a jListCursosOfer listmodel.addElement(jTDescrição.getText()); //Aqui vc adiciona um elemento a esse model }

That’s it.

douglasca86

Blz ViniGodoy, obrigado por sua atenção, pois é fiz o procedimento que vc escreveu , só que dá o seguinte exceção:

Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: javax.swing.JList$3 cannot be cast to javax.swing.DefaultListModel

douglasca86

Consegui…

Além de inserir ele verifica se já existe curso cadastrado.

//Método para Adicionar Curso
    public void adicionaCurso(){
    String cursos = (String) jTDescrição.getText();

    // O usuário não digitar um nome original ...
    if (cursos.equals("") || alreadyInList(cursos)) {
                //Toolkit.getDefaultToolkit().beep(); - Dispara um beep de alerta padrão do Windows
                JOptionPane.showMessageDialog(null,"Curso já Cadastrado","Informação",JOptionPane.INFORMATION_MESSAGE);
                jTDescrição.requestFocus();
                jTDescrição.selectAll();
                return;
            }

            int index = jListCursosOfer.getSelectedIndex(); // obtém índice selecionado
            if (index == -1) { // nenhuma seleção, insira então no início
                index = 0;
            } else {// adiciona depois do item selecionado
                index++;
            }

            modelo.insertElementAt(cursos, index);
            jListCursosOfer.setModel(modelo);
            // Se a gente só queria acrescentar ao final, nós faríamos o seguinte:
            //modelo.addElement(jTDescrição.getText());

             // Limpa o campo de texto.
            jTDescrição.requestFocus();
            jTDescrição.setText("");

            // Selecione o novo item e torná-lo visível.
            jListCursosOfer.setSelectedIndex(index);
            jListCursosOfer.ensureIndexIsVisible(index);
}

Aqui o método de verificação se existe algo na lista cadastrado.

//Método que verifica se já tem algum item existente na lista
 protected boolean alreadyInList(String cursos) {
            return modelo.contains(cursos);
        }

Taí o Código caso alguém esteja passando o mesmo problema!!!

Obrigado ViniGodoy valeu pela Força…Abrax!!!

Criado 14 de maio de 2011
Ultima resposta 14 de mai. de 2011
Respostas 3
Participantes 2