Remover item de JList

14 respostas
J

Olá galera,
estou tentanto remover um intem de um JList e nao estou conseguindo estou gerando uma exeção:
java.lang.ArrayIndexOutOfBoundsException: Array index out of range

estou tentado removar assim:

testa =  selected[jl_selected.getSelectedIndex()];
                    jl_selected.remove(jl_selected.getSelectedIndex());
                    jl_selected.validate();

como deve ser?
Grato.

14 Respostas

R

verifique o retorno de
jl_selected.getSelectedIndex();
provavelmente nao ha nenhum item selecionado e ele vai retornar -1

J

Reilander:
verifique o retorno de
jl_selected.getSelectedIndex();
provavelmente nao ha nenhum item selecionado e ele vai retornar -1

eu verifiquei e me certifiquei q tinha um item selecionado ele me da o erro

Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1
sendo que eu clikei no segundo item da lista se eu clikar no 1º item ele me retorna 0

R

entao o erro eh nesse linha:

testa = selected[jl_selected.getSelectedIndex()];

no acesso ao seu array “selected”
como voce o inicializa?
posta ai mais partes do codigo

J

Reilander:
entao o erro eh nesse linha:

testa = selected[jl_selected.getSelectedIndex()];

no acesso ao seu array "selected"
como voce o inicializa?
posta ai mais partes do codigo


o codigo e muito grande…
inicializo ele assim

private String selected[] = new String [18];

e crio jlist assim

jl_selected = new JList(selected); 
jl_selected.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
R
  1. pelo amor de Deus, remove esse codigo todo ai
    senao fica impossivel de ler, demora muito pra carregar isso aeh
  2. na excecao, eh mostrada a linha em que ela foi gerada. qual foi?
    posta eh

NAO ESQUECE DE REMOVER TODO O CODIGO!

J

Reilander:
1) pelo amor de Deus, remove esse codigo todo ai
senao fica impossivel de ler, demora muito pra carregar isso aeh
2) na excecao, eh mostrada a linha em que ela foi gerada. qual foi?
posta eh

NAO ESQUECE DE REMOVER TODO O CODIGO!

essa é a exception

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

at java.awt.Container.remove(Container.java:1132)

at Interface.Frame.Frame_Frist_Time$ButtonHandler.actionPerformed(Frame_Frist_Time.java:329)

linha 329 é essa aqui
jl_selected.remove(jl_selected.getSelectedIndex());

se eu comentar essa linha todo codigo funciona

R

se voce clicar no primeiro ele remove? da excecao?

J

da execeçao e nao remove… ja tentei assim tb jl_selected.remove(0); para ver tb nao removeu e deu execeçao

R

solucao!
eh o seguinte, esse remove, nao esta removendo os dados, realmente.
faca o seguinte:

crie a lista sem passar o seu array de dados.
sete um modelo pra lista, que eh quem manipula os dados:

JList lista = new JList(); lista.setModel(new DefaultListModel());
agora, pra cada objeto que voce tiver, adicione-o na lista:

Object[] objs = new Object[18]; for(Object obj : objs) { ((DefaultListModel)lista.getModel()).addElement(obj); }
e ao remover, faca o seguinte:

((DefaultListModel)lista.getModel()).remove(jl_selected.getSelectedIndex());

tenta ai e posta

J

Reilander:
solucao!
eh o seguinte, esse remove, nao esta removendo os dados, realmente.
faca o seguinte:

crie a lista sem passar o seu array de dados.
sete um modelo pra lista, que eh quem manipula os dados:

JList lista = new JList(); lista.setModel(new DefaultListModel());
agora, pra cada objeto que voce tiver, adicione-o na lista:

Object[] objs = new Object[18]; for(Object obj : objs) { ((DefaultListModel)lista.getModel()).addElement(obj); }
e ao remover, faca o seguinte:

((DefaultListModel)lista.getModel()).remove(jl_selected.getSelectedIndex());

tenta ai e posta


agora tenho a execeção

Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: javax.swing.JList$4 cannot be cast to javax.swing.DefaultListModel
at Interface.Frame.Frame_Frist_Time$ButtonHandler.actionPerformed(Frame_Frist_Time.java:263)

((DefaultListModel)jl_selected.getModel()).addElement(obj[selected_index]);
R

me mostra a criacao da tua lista
e como tu setou o model

J

Reilander:
me mostra a criacao da tua lista
e como tu setou o model

resolvi agora tenho q acertar meu codigo mesmo… nao sei se vc entedeu oq eu estava querendo fazer… são 4 listas sendo q 3 é o onde vc escolhe oq cai para a 4 lista vc tem q escolher 18 itens sendo 10 da 1 lista 5 da 2 e 3 da 3ª…

R

e esse erro foi o que?

J

foi erro no meu algoritimo mesmo estava pegandpo o nome errado ja acertei valeu mesmo pela ajuda t+

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