Salve! Estou tentando implementar o método acima com o objetivo de limpar todos os campos de um JFrame.
Somente para JTextField funcionou perfeitamente. Mas os problemas começaram quando tentei ir além, e abranger também outros componentes, em especial o JComboBox, que me parece ser a origem do problema…
Uma exceção é lançada, e nela há referência a trechos (linha 6) do código abaixo, que implementa o listener para o combo box.
cboTiposDeCombustivel.addItemListener(newItemListener(){@OverridepublicvoiditemStateChanged(ItemEventevt){inti=cboTiposDeCombustivel.getSelectedIndex();//Obtém o índice -1txtPrecoCombustivel.setText(Double.toString(combustiveis.get(i).getPrecoPorLitro())//Tenta acessar a posição -1 do ArrayList);txtEstoque.setText(Integer.toString(combustiveis.get(i).getLitrosEmEstoque()));}});
Seguem abaixo as mensagens de erro geradas…
Já esgotei minhas possibilidades, tentando de todas as formas que fui capaz… Por isso recorro aos companheiros de fórum para que me ajudem a encontrar e corrigir o erro.
Não tenho muito domínio sobre o controle de exceções, mas acredito que as respostas que desejo encontram-se nas mensagens de erro acima. Então se puderem também me indicar boas fontes para aprender a respeito…
De qualquer forma, se você leu a mensagem até aqui: muito obrigado!
Esse erro é quando vc tenta acessar (no caso -1) um index de um array que não existe…
E deve estar ocorrendo mesmo no combobox…
No seu combo, vc não tem nenhuma opção neutra/todos? aponte seu combo para esse index, que provável ser 0
regis_hideki
Não sei como funciona no Swing, mas o problema pode estar aqui:
((JComboBox)c).setSelectedIndex(-1);
Ele deve atribuir o índice do combo (e índice negativo não existe). Talvez, o “value” do campo default esteja como “-1”, por isso a confusão. Provavelmente seu campo default deve estar na primeira posição, então, tenta colocar isso:
((JComboBox)c).setSelectedIndex(0);
lavreh
regis_hideki e igor_ks, exatamente como vocês disseram!
Depois de apanhar um pouco do Debug, consegui chegar até a seguinte instrução: ((JComboBox) c).setSelectedIndex(-1). Então percebi que ao definir o índice do combo box como -1, mesmo que através de programação, era disparado um ItemEvent que culminava na seguinte linha do listener: txtPrecoCombustivel.setText( Double.toString( combustiveis.get(i).getPrecoPorLitro() ))… Como i = -1, consegui um belo ArrayIndexOutOfBoundsException!
Resolvi, como sugerido, acrescentando um elemento vazio ao início do ArrayList que alimenta o combo box.