staroski 29 de set. de 2018
Tem certeza que acontece no removeAllElements?
Não é nenhum listener que está tentando manipular algum índice que já foi removido?
Posta o StackTrace completo do erro.
NiloDias 29 de set. de 2018
Este é o Método
private void btnListarTodosActionPerformed ( java .awt .event .ActionEvent evt ) {
DefaultListModel x = new DefaultListModel () ;
x .clear () ;
listPessoasCadastradas .setModel ( x ) ;
for ( Pessoa p : GerenciarPessoas .getListaPessoas ()) {
x .addElement ( p .getNome ()) ;
listPessoasCadastradas .setModel ( x ) ;
}
}
Erro que aparece
Exception in thread “ AWT - EventQueue - 0 ” java . lang . ArrayIndexOutOfBoundsException : - 1
at java . util . ArrayList . elementData ( ArrayList . java : 418 )
at java . util . ArrayList . get ( ArrayList . java : 431 )
at classes . GerenciarPessoas . getPessoa ( GerenciarPessoas . java : 62 )
at classes . Aplicacao . listPessoasCadastradasValueChanged ( Aplicacao . java : 264 )
at classes . Aplicacao . access$600 ( Aplicacao . java : 15 )
at classes . Aplicacao$7 . valueChanged ( Aplicacao . java : 112 )
at javax . swing . JList . fireSelectionValueChanged ( JList . java : 1796 )
at javax . swing . JList$ListSelectionHandler . valueChanged ( JList . java : 1810 )
at javax . swing . DefaultListSelectionModel . fireValueChanged ( DefaultListSelectionModel . java : 184 )
at javax . swing . DefaultListSelectionModel . fireValueChanged ( DefaultListSelectionModel . java : 164 )
at javax . swing . DefaultListSelectionModel . fireValueChanged ( DefaultListSelectionModel . java : 211 )
at javax . swing . DefaultListSelectionModel . changeSelection ( DefaultListSelectionModel . java : 405 )
at javax . swing . DefaultListSelectionModel . changeSelection ( DefaultListSelectionModel . java : 415 )
at javax . swing . DefaultListSelectionModel . removeSelectionIntervalImpl ( DefaultListSelectionModel . java : 576 )
at javax . swing . DefaultListSelectionModel . clearSelection ( DefaultListSelectionModel . java : 420 )
at javax . swing . JList . clearSelection ( JList . java : 2043 )
at javax . swing . JList . setModel ( JList . java : 1677 )
at classes . Aplicacao . btnListarTodosActionPerformed ( Aplicacao . java : 238 )
at classes . Aplicacao . access$400 ( Aplicacao . java : 15 )
at classes . Aplicacao$5 . actionPerformed ( Aplicacao . java : 96 )
at javax . swing . AbstractButton . fireActionPerformed ( AbstractButton . java : 2022 )
at javax . swing . AbstractButton$Handler . actionPerformed ( AbstractButton . java : 2348 )
at javax . swing . DefaultButtonModel . fireActionPerformed ( DefaultButtonModel . java : 402 )
at javax . swing . DefaultButtonModel . setPressed ( DefaultButtonModel . java : 259 )
at javax . swing . plaf . basic . BasicButtonListener . mouseReleased ( BasicButtonListener . java : 252 )
at java . awt . Component . processMouseEvent ( Component . java : 6533 )
at javax . swing . JComponent . processMouseEvent ( JComponent . java : 3324 )
at java . awt . Component . processEvent ( Component . java : 6298 )
at java . awt . Container . processEvent ( Container . java : 2236 )
at java . awt . Component . dispatchEventImpl ( Component . java : 4889 )
at java . awt . Container . dispatchEventImpl ( Container . java : 2294 )
at java . awt . Component . dispatchEvent ( Component . java : 4711 )
at java . awt . LightweightDispatcher . retargetMouseEvent ( Container . java : 4888 )
at java . awt . LightweightDispatcher . processMouseEvent ( Container . java : 4525 )
at java . awt . LightweightDispatcher . dispatchEvent ( Container . java : 4466 )
at java . awt . Container . dispatchEventImpl ( Container . java : 2280 )
at java . awt . Window . dispatchEventImpl ( Window . java : 2746 )
at java . awt . Component . dispatchEvent ( Component . java : 4711 )
at java . awt . EventQueue . dispatchEventImpl ( EventQueue . java : 758 )
at java . awt . EventQueue . access$500 ( EventQueue . java : 97 )
at java . awt . EventQueue$3 . run ( EventQueue . java : 709 )
at java . awt . EventQueue$3 . run ( EventQueue . java : 703 )
at java . security . AccessController . doPrivileged ( Native Method )
at java . security . ProtectionDomain$JavaSecurityAccessImpl . doIntersectionPrivilege ( ProtectionDomain . java : 76 )
at java . security . ProtectionDomain$JavaSecurityAccessImpl . doIntersectionPrivilege ( ProtectionDomain . java : 86 )
at java . awt . EventQueue$4 . run ( EventQueue . java : 731 )
at java . awt . EventQueue$4 . run ( EventQueue . java : 729 )
at java . security . AccessController . doPrivileged ( Native Method )
at java . security . ProtectionDomain$JavaSecurityAccessImpl . doIntersectionPrivilege ( ProtectionDomain . java : 76 )
at java . awt . EventQueue . dispatchEvent ( EventQueue . java : 728 )
at java . awt . EventDispatchThread . pumpOneEventForFilters ( EventDispatchThread . java : 201 )
at java . awt . EventDispatchThread . pumpEventsForFilter ( EventDispatchThread . java : 116 )
at java . awt . EventDispatchThread . pumpEventsForHierarchy ( EventDispatchThread . java : 105 )
at java . awt . EventDispatchThread . pumpEvents ( EventDispatchThread . java : 101 )
at java . awt . EventDispatchThread . pumpEvents ( EventDispatchThread . java : 93 )
at java . awt . EventDispatchThread . run ( EventDispatchThread . java : 82 )
O problema é o seguinte, eu consigo adicionar uma pessoa e lista-la SEMPRE, porém, se eu clicar em alguma delas no jList aparece esse erro.
staroski 29 de set. de 2018
classes .GerenciarPessoas .getPessoa (GerenciarPessoas .java:62 )
at classes .Aplicacao .listPessoasCadastradasValueChanged (Aplicacao .java:264 )
at classes .Aplicacao .access $600 (Aplicacao .java:15 )
at classes .Aplicacao $7 .valueChanged (Aplicacao .java:112 )
Como suspeitei, o problema é esse seu listener, faça uma tratativa no método listPessoasCadastradasValueChanged para só chamar o getPessoa quando a linha for diferente de -1.
NiloDias 30 de set. de 2018
Muito obrigado pela ajuda!
Até pensei no Try Catch antes mas não imaginei que resolveria.
Ficou da seguinte maneira:
try {
DefaultListModel y = new DefaultListModel() ;
y.addElement(" Nome : "+GerenciarPessoas.getPessoa(listPessoasCadastradas.getSelectedIndex()).getNome());
y.addElement(" Idade : "+GerenciarPessoas.getPessoa(listPessoasCadastradas.getSelectedIndex()).getIdade());
y.addElement(" Sexo : " + GerenciarPessoas . getPessoa ( listPessoasCadastradas . getSelectedIndex ()) . getSexo ());
listDescricao.setModel(y) ;
} catch ( ArrayIndexOutOfBoundsException e ) {
rodriguesabner 30 de set. de 2018
Resolveu? Se sim, marca a resposta do staroski como resolvida.
Solucao aceita
staroski 1 de out. de 2018
Não precisa de try - catch:
int linha = listPessoasCadastradas . getSelectedIndex ();
if ( linha != -1 ) {
Pessoa pessoa = GerenciarPessoas.getPessoa(linha) ;
y.addElement(" Nome : " + pessoa.getNome());
y.addElement(" Idade : " + pessoa.getIdade());
y.addElement(" Sexo : " + pessoa . getSexo ());
}
NiloDias 1 de out. de 2018
Também funcionou!
Obrigado.