Excluindo itens de um jlist

Pessoal … to querendo excluir um item de um jlist … mas nao to conseguindo…

Os itens desse jlist foram adicionados por uma JcomboBox…

eis o codigo da remocao e o erro abaixo:

listaPalavrasChave.remove(listaPalavrasChave.getSelectedIndex());

esse evento e disparado por um botao , quando clico … quero remover o item q selecionei na lista.

o erro :

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1

Isso

listaPalavrasChave.getSelectedIndex()

está retornando -1, ou seja, não está nd selecionado…
Coloque assim:

if(listaPalavrasChave.getSelectedIndex() >= 0){
    listaPalavrasChave.remove(listaPalavrasChave.getSelectedIndex());
}

ta dando o memso erro so qe com o indice 1

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1

Acho que isso resolve…

if(listaPalavrasChave.getSelectedIndex() >= 0 && listaPalavrasChave.getSelectedIndex() < listCliente.getModel().getSize() ){

     listaPalavrasChave.remove(listaPalavrasChave.getSelectedIndex());

 }

Cara parou de dar erro , mas nao ta retirando da lista.
os itens continuam aparecendo la.

renanbarros,

dá uma olhada nesse link abaixo:

http://java.sun.com/docs/books/tutorial/uiswing/components/list.html

Uma pergunta, você está usando que Objeto para carregar os elementos na JLIst? ListModel, Object[] ou Vector.

No link que te passei tem exemplo de como fazer.

Uma ilustração:

[code]listModel = new DefaultListModel();
listModel.addElement(“Debbie Scott”);
listModel.addElement(“Scott Hommel”);
listModel.addElement(“Alan Sommerer”);

list = new JList(listModel);[/code]

Agora, para remover um item do tipo ListModel:

int index = list.getSelectedIndex(); listModel.remove(index);

E não como você havia colocado:

Você remove o elemento do Objeto e não do Componente JList, como você querendo fazer.

Espero ter ajudado.

1 curtida

O problema e q ListModel em jva 1.5 nao tem AddElement

renanbarros,

ListModel é uma interface que a classe DefaultListModel implementa.

Olha direito o código que lhe passei:

[code]listModel = new DefaultListModel();
listModel.addElement(“Debbie Scott”);
listModel.addElement(“Scott Hommel”);
listModel.addElement(“Alan Sommerer”);

list = new JList(listModel);[/code]

A classe DefaultListModel tem o método addElement.

Dá uma olhada aqui.

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/DefaultListModel.html

Você está fazendo confusão.

Qualquer coisa, se der, anexa o código aqui que ajeito e mando para você.

Na verdade so preciso de remover (por meio de um botao) os items que foram adicionados a essa lista pela combobox .

pode contrui um metodo de um botao que faca isso ??

lembrando ., quero retirar da lista os items que foram adicionados da seguinte forma no evento click da combo:


private void inserirLista(java.awt.event.ActionEvent evt) {                              
        listapalavra.addElement((PalavraChave)cbPalavraChaveImagem.getSelectedItem());
        listaPalavrasChave.setListData(listapalavra);
        
    }      

consegui… vlw mesmo… estava fazendo errado mesmo…rrs foi mal…

renanbarros,

segue anexo dois arquivos de exemplos que fiz aqui.

Espero que entenda.

Usei tanto a classe DefaultListModel quanto a Vector.

[quote=Petrônio Braga]renanbarros,

segue anexo dois arquivos de exemplos que fiz aqui.

Espero que entenda.

Usei tanto a classe DefaultListModel quanto a Vector.[/quote]

E ai Petrônio, tudo bem!?

  Estava vendo o arquivo "JListDefaultListModel.java" e não resolveu porque está fazendo igual ao meu.

  [b]EXPLICANDO-ME: [/b]Eu tb tenho uma lista, e incluo itens nele por ação de botão("[b]INCLUIR[/b]"), e excluo-os por outro botão("[b]EXCLUIR[/b]").
 
  Meu botão EXCLUIR está funcionando normalmente, mas só pra itens separadamente (clico no item e clico no botão EXCLUIR. 

  Se selecionar (usando [b]SHIFT[/b]) vários itens e clicar no botão só apaga o 1º item selecionado.

  Como alterar meu código?! Pode me ajudar?!  :?  :wink: 

SEGUE O CÓDIGO DO BOTÃO “EXCLUIR”:

[b] //atribuindo ação do botão Excluir
butExc.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){

		if(list.getSelectedIndex() == -1) {
			JOptionPane.showMessageDialog(null,"Não foi selecionado nenhum item a ser excluído!","zero itens selecionado",JOptionPane.ERROR_MESSAGE);			
		
		} else {

		int var = JOptionPane.showConfirmDialog(null,"Deseja realmente excluir ?","Deseja realmente excluir ?",JOptionPane.OK_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
				  					  
        if(var == 0) {
            model.remove(list.getSelectedIndex());
            int index = list.getSelectedIndex();
            if (model.getSize() == 0) {
            butExc.setEnabled(false);
            butFin.setEnabled(false);
        }
        else if (list.getSelectedIndex() == model.getSize())
             --index;
             else {
	              list.setSelectedIndex(index);
                  list.ensureIndexIsVisible(index);                      
             }
        }
		}
	}
});[/b]

ola a todos!!

eu queria saber se o JList so guarda Strings. Tipo, eu fiz uma classe chamada Funcionario com varios atributos e queria armazenar um array de funcionario numa JList como se fosse uma colecao. pode ser??

autoresposta: pode sim acabei de testar
: D