Erro setter em ComboBox para addItem  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
guilherme.dio
JavaEvangelist
[Avatar]

Membro desde: 06/02/2011 20:48:03
Mensagens: 443
Localização: Santo André - SP
Offline

Estou com uma classe auxiliar, onde possuo como atributo um ComboBox, e tenho 1 setter e um getter:



E tbm tenho uma classe de comandos no BD, odne faço o set na classe do ComboBox, porém quando chega no set, ele só é executaod uma vez, na segunda vez da eror e vai pro catch:


Alguém tem idéia do que pode estar causando o erro?





[Email] [MSN]
rafaelbortoletto
JavaBaby
[Avatar]

Membro desde: 26/01/2007 14:27:01
Mensagens: 95
Localização: São Bernardo do Campo - SP
Offline

sem a mensagem de erro exata é difícil saber o problema. Mas, na documentação do Java diz que você pode ter problemas se adicionar objetos string duplicados.

http://download.oracle.com/javase/1,5.0/docs/api/javax/swing/JComboBox.html#addItem%28java.lang.Object%29

Veja se a explicação ajuda.
guilherme.dio
JavaEvangelist
[Avatar]

Membro desde: 06/02/2011 20:48:03
Mensagens: 443
Localização: Santo André - SP
Offline

Acontece, que o erro gerado no catch é simplesmente "NULL" nada mais





[Email] [MSN]
rafaelbortoletto
JavaBaby
[Avatar]

Membro desde: 26/01/2007 14:27:01
Mensagens: 95
Localização: São Bernardo do Campo - SP
Offline

Creio que o problema possa ser que o Nome da peça está como NULL no banco de dados por isso, ele dá esse problema. Você pode tentar substituir por uma string vazia ou por um nome do tipo "vazio".


Em todo o caso, tente substituir o getCause por getMessage dentro do seu bloco catch ou use o printStackTrace() para saber um detalhe melhorado dessa exceção.

http://download.oracle.com/javase/1,5.0/docs/api/java/lang/Throwable.html#getMessage%28%29

This message was edited 1 time. Last update was at 01/05/2011 14:34:09

guilherme.dio
JavaEvangelist
[Avatar]

Membro desde: 06/02/2011 20:48:03
Mensagens: 443
Localização: Santo André - SP
Offline

Mesmo o e.getMessage me diz NULL





[Email] [MSN]
guilherme.dio
JavaEvangelist
[Avatar]

Membro desde: 06/02/2011 20:48:03
Mensagens: 443
Localização: Santo André - SP
Offline

será que não tem nada de errado com o tipo de retorno desse metodo?

porque se não for isso, entao nao sei, pq fiz o debug, e percebi que ele passa uma unica vez pelo setPeça, inclusive pega o nome d aprimeira peça no banco de dados e retorna porém na segunda vez nem passa pelo setter, vai direto pro catch....

e no meu BD n tem nenhum nome null





[Email] [MSN]
rafaelbortoletto
JavaBaby
[Avatar]

Membro desde: 26/01/2007 14:27:01
Mensagens: 95
Localização: São Bernardo do Campo - SP
Offline

Então, tente executar o comando sql ( select nome from tabela ) no seu banco de dados e veja se algum nome está como NULL. Se estiver, você terá que alterar a coluna nome no banco de dados para not null e guardar um nome sempre que inserir um registro ou então, fazer a substituição usando o método replace da string substituindo o valor null por uma string vazia ou com o texto "vazio" por exemplo.
guilherme.dio
JavaEvangelist
[Avatar]

Membro desde: 06/02/2011 20:48:03
Mensagens: 443
Localização: Santo André - SP
Offline

No printStackTrace, o primeiro item da lista é a classe auxiliar Peças, no método setPeça(String peça);





[Email] [MSN]
rafaelbortoletto
JavaBaby
[Avatar]

Membro desde: 26/01/2007 14:27:01
Mensagens: 95
Localização: São Bernardo do Campo - SP
Offline

cole o printStackTrace todo aqui.
guilherme.dio
JavaEvangelist
[Avatar]

Membro desde: 06/02/2011 20:48:03
Mensagens: 443
Localização: Santo André - SP
Offline






[Email] [MSN]
rafaelbortoletto
JavaBaby
[Avatar]

Membro desde: 26/01/2007 14:27:01
Mensagens: 95
Localização: São Bernardo do Campo - SP
Offline

Pelas mensagens de erro o problema pode estar no fechamento de conexões que é fechado antes da hora.

Tente comentar o código abaixo e veja se funciona


Além disso, coloque o código de fechamento dentro de um finally para que seja executado corretamente.

fica assim

guilherme.dio
JavaEvangelist
[Avatar]

Membro desde: 06/02/2011 20:48:03
Mensagens: 443
Localização: Santo André - SP
Offline

Já tentei comentar as 2 linhas de fechar o Statement e o ResultSet mas não deu certo, ja tentei o bloco finally tbm não deu, estou desanimado agora, muito ,mesmo


de uma olhada nesse método actionPerformed de um ComboBox onde eu pego o item selecionado e mando pra classe comandos onde esta o metodo de consultaPeça, que ao retornar vai para esse metodo que vou postar:



Agora esta certo a sequencia é essa

Admin_Consulta.actonPerformed -> Comandos.consultaPeça - > Auxiliar.Peça ->(retorna) Comandos.consultaPela ->(retorna) Admin_Consulta.actionPerformed


Se o erro não estiver ai, será que não é o tipo de retorno do consultaPeça()?

This message was edited 1 time. Last update was at 01/05/2011 15:26:16






[Email] [MSN]
rafaelbortoletto
JavaBaby
[Avatar]

Membro desde: 26/01/2007 14:27:01
Mensagens: 95
Localização: São Bernardo do Campo - SP
Offline

guilherme.dio wrote:Já tentei comentar as 2 linhas de fechar o Statement e o ResultSet mas não deu certo, ja tentei o bloco finally tbm não deu, estou desanimado agora, muito ,mesmo


de uma olhada nesse método actionPerformed de um ComboBox onde eu pego o item selecionado e mando pra classe comandos onde esta o metodo de consultaPeça, que ao retornar vai para esse metodo que vou postar:



Agora esta certo a sequencia é essa

Admin_Consulta.actonPerformed -> Comandos.consultaPeça - > Auxiliar.Peça ->(retorna) Comandos.consultaPela ->(retorna) Admin_Consulta.actionPerformed


Se o erro não estiver ai, será que não é o tipo de retorno do consultaPeça()?


Bom, se executa pelo menos uma vez o erro certamente não está no tipo de retorno porque se estivesse ele não executaria. Agora, depende do que você executa quando seleciona a tabela para procurar pelos nomes pela segunda vez. Pois, se forem tabelas diferentes pode ser que em outra tabela não existam itens cadastrados ou até mesmo itens nulos na coluna nome como falado antes.
guilherme.dio
JavaEvangelist
[Avatar]

Membro desde: 06/02/2011 20:48:03
Mensagens: 443
Localização: Santo André - SP
Offline

Resolvi, eu fiz um ArrayList, e no retorno.next fui criando um novo objPeça, setei no atributo Peça o retorno.getString("nome"); e adicionei o objPeça no arrayList


retornei o arrayList, e fiz uma logica pra adicionar no ComboBox.





[Email] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team