Estou com um pequeno problema com a minha JList que faço sem problemas em uma JTable. O problema é o seguinte:
Eu insiro um registro no meu banco de dados e preciso atualizar a minha JList com esse novo registro. Consigo fazer isso em uma JTable sem problemas, mas não consigo fazer funcionar com uma Jlist, ou seja, estou seguindo a mesma lógica para fazer isso na JList. Consigo inserir o registro, mas no momento de atualizar a JList, não atualiza. Existe alguma diferença entre exibir o conteúdo atualizado de uma JList e fazer o mesmo em uma JTable?
publicvoidPreencherJListDePastaDeContatos(){finalDefaultListModelDLM_PastaDoPerfilUsuario=newDefaultListModel();jList_ListaPastaDoPerfilDoUsuario=newJList(DLM_PastaDoPerfilUsuario);try{PastaDeContatosObjetoPastaDeContatos=newPastaDeContatos();DAOObjetoDAOPastaDeContatos=newDAO(ObjetoPastaDeContatos);List<PastaDeContatos>ListarPastaDeContatos=newArrayList<PastaDeContatos>();StringComandoSQL=" where CodigoPerfilUsuario="+CodigoRecebido;ListarPastaDeContatos=ObjetoDAOPastaDeContatos.ExibirRegistro("PastaDeContatos"+ComandoSQL);intTamanhoDaListaPastaDeContatos=ListarPastaDeContatos.size();for(inti=0;i<TamanhoDaListaPastaDeContatos;i++){ObjetoPastaDeContatos=ListarPastaDeContatos.get(i);DLM_PastaDoPerfilUsuario.addElement(ObjetoPastaDeContatos.getDescricaoPasta());jList_ListaPastaDoPerfilDoUsuario.setCellRenderer(newImagens());}}catch(ExceptionErroPerfilUsuario){JOptionPane.showMessageDialog(null,"Erro ao Exibir a Pasta do Perfil do Usuário! - "+ErroPerfilUsuario);}}
Olá, qual a mensagem que aparece, ou qual o estado da aplicação(trava, falha na renderização…)
outra coisa, tenta utilizar os padrões de codificação, e também os de projeto.
forte abraço estamos esperando o seu retorno.
S
shneves
Boa tarde André,
Esse é que é o problema, não apresenta nenhuma mensagem de erro. Faço o acompanhamento em tempo de execução. Mostra o comando INSERT sendo executado e pronto. A tela fica do jeito que estava antes, sem uma atualização com o novo registro.
O que você quis dizer com os padrões de desenvolvimento? São os padrões para dar nomes às variáveis, classes, métodos, etc…? Até procurei algo a respeito mas não localizei, se puder me indicar, agradeceria e muito, você não faz idéia. Mas algumas coisas, eu adaptei, pois estava tendo dificuldade na hora de localizar certas coisas no programa se usasse alguns padrões. Uma delas é usar abreviaturas, pode parecer estranho, mas sua mente trabalha dobrado, pois seus cérebro não foi “programado” para isso. rsrsrsrsrs…
Grato,
Sérgio
A
andre.henriques
Olá,
documentei algumas coisas que precisamos entrar em acordo.
publicvoidPreencherJListDePastaDeContatos(){finalDefaultListModelDLM_PastaDoPerfilUsuario=newDefaultListModel();jList_ListaPastaDoPerfilDoUsuario=newJList(DLM_PastaDoPerfilUsuario);try{PastaDeContatosObjetoPastaDeContatos=newPastaDeContatos();//pq o DAO recebe um PastaDeContatos?// o que o DAO fará com ele?DAOObjetoDAOPastaDeContatos=newDAO(ObjetoPastaDeContatos);List<PastaDeContatos>ListarPastaDeContatos=newArrayList<PastaDeContatos>();StringComandoSQL=" where CodigoPerfilUsuario="+CodigoRecebido;ListarPastaDeContatos=ObjetoDAOPastaDeContatos.ExibirRegistro("PastaDeContatos"+ComandoSQL);intTamanhoDaListaPastaDeContatos=ListarPastaDeContatos.size();for(inti=0;i<TamanhoDaListaPastaDeContatos;i++){//pq a referencia de 'ObjetoPastaDeContatos' não está aqui?// poderia ficar assim: PastaDeContatos ObjetoPastaDeContatos = ListarPastaDeContatos.get(i);//pois a cada interação vc terá uma referencia defirente, e como está no JList terá apenas 1(um) objetoObjetoPastaDeContatos=ListarPastaDeContatos.get(i);DLM_PastaDoPerfilUsuario.addElement(ObjetoPastaDeContatos.getDescricaoPasta());//Tenta criar uma referencia fora desse laço, pois assim vc usa o mesmo objetojList_ListaPastaDoPerfilDoUsuario.setCellRenderer(newImagens());}}catch(ExceptionErroPerfilUsuario){JOptionPane.showMessageDialog(null,"Erro ao Exibir a Pasta do Perfil do Usuário! - "+ErroPerfilUsuario);}}
assim que vc verificar esse documentario que eu coloquei no proprio codigo, daremos alguma dicas de ‘formatação’ do codigo
Eu tô longe de ser “fera”, mas valeu"! rsrsrsrsrs
Fiz a substituição, mas o problema não está nessa linha. O corportamento do programa fica idêntico ao que estava antes, ou seja, não houve diferença. Ele chegar a fazer o INSERT e o SELECT para atualizar o JList, mas por algum motivo o JList não é atualizado.
Sérgio
S
shneves
andre.henriques:
Olá,
documentei algumas coisas que precisamos entrar em acordo.
publicvoidPreencherJListDePastaDeContatos(){finalDefaultListModelDLM_PastaDoPerfilUsuario=newDefaultListModel();jList_ListaPastaDoPerfilDoUsuario=newJList(DLM_PastaDoPerfilUsuario);try{PastaDeContatosObjetoPastaDeContatos=newPastaDeContatos();//pq o DAO recebe um PastaDeContatos?// o que o DAO fará com ele?DAOObjetoDAOPastaDeContatos=newDAO(ObjetoPastaDeContatos);List<PastaDeContatos>ListarPastaDeContatos=newArrayList<PastaDeContatos>();StringComandoSQL=" where CodigoPerfilUsuario="+CodigoRecebido;ListarPastaDeContatos=ObjetoDAOPastaDeContatos.ExibirRegistro("PastaDeContatos"+ComandoSQL);intTamanhoDaListaPastaDeContatos=ListarPastaDeContatos.size();for(inti=0;i<TamanhoDaListaPastaDeContatos;i++){//pq a referencia de 'ObjetoPastaDeContatos' não está aqui?// poderia ficar assim: PastaDeContatos ObjetoPastaDeContatos = ListarPastaDeContatos.get(i);//pois a cada interação vc terá uma referencia defirente, e como está no JList terá apenas 1(um) objetoObjetoPastaDeContatos=ListarPastaDeContatos.get(i);DLM_PastaDoPerfilUsuario.addElement(ObjetoPastaDeContatos.getDescricaoPasta());//Tenta criar uma referencia fora desse laço, pois assim vc usa o mesmo objetojList_ListaPastaDoPerfilDoUsuario.setCellRenderer(newImagens());}}catch(ExceptionErroPerfilUsuario){JOptionPane.showMessageDialog(null,"Erro ao Exibir a Pasta do Perfil do Usuário! - "+ErroPerfilUsuario);}}
assim que vc verificar esse documentario que eu coloquei no proprio codigo, daremos alguma dicas de ‘formatação’ do codigo
ops!, vc foi programador pascal(dephi)?
forte abraço
Olá André,
Então vamos lá.
O DAO é a minha classe de persistência com o banco de dados. Nela está o meu INSERT, DELETE e o EXIBIRREGISTROS que aparece mais abaixo.
Se eu colocar o “ObjetoPastaDeContatos” aonde você indica eu não consigo fazer o select no banco de dados com a condição (where) que está acima.
A linha que você pediu para tirar do laço ela coloca uma imagem ao lado de cada linha. E a medida que eu seleciono a linha a imagem muda. Essa linha de código foi tirada de um exemplo disponível no site oficial do Java.
Qualquer coisa é só perguntar.
Grato,
Sérgio
A
andre.henriques
Faz o seguinte pra não perder tanto tempo com ‘axismo’ da minha parte, verifica quantos objetos estão dentro da lista, utiliza o JOptionPane, vc já tem guardado em uma variavel.
S
shneves
Valeu André,
Com uma solução simples conseguiu descobrir o que estava acontecendo e porque estava acontecendo. Explico:
A diferença é que com o JTable eu usava a entrada de um novo registro no mesmo form (Frame ou JPanel). Quando comecei a usar o JList eu usei um segundo form (Frame) separado do primeiro para fazer a entrada de um novo registro. O que estava acontecendo é que quando eu inseria um registro no segundo form e fechava, claro que nada acontecia no primeiro form. Ou seja, quando eu volto para o primeiro form após fechar o segundo form, não existe nenhum comando para atualizar o JList. Pois é, simples e eu aqui quebrando cabeça sem analisar a lógica direito. Que vacilo!
Resumindo, é só colocar o comando no lugar certo do primeiro form que ele vai atualizar a JList. E depois eu é que sou fera! rsrsrsrs
Valeu e obrigado.
Sérgio
A
andre.henriques
massa, foi resolvido?
“ver só” tenta dá uma olhada em padrão de codificação do JAVA, é pq a leitura do código fica mais rapida, não digo que o padrao java é mais rapido em comparação a outros, mas pq todos(ou quase todos) a utilizam é melhor.
forte abraço.
S
shneves
Resolveu sim André,
Quanto aos padrões de codificação já estou dando uma olhada. Vou dar uma lida com mais calma para adotar corretamente. O que eu não gostei é das abreviaturas para os componentes, por exemplo. Tipo btn para Botão, lbl para JLabel e por aí vai. Particularmente não gosto de trabalhar assim, usando abreviaturas. Abreviar é fazer o cérebro trabalhar dobrado, ele lê e traduz. O detalhe é que preciso me adaptar ao mercado, e aí não tem jeito. Mas com certeza a maioria, senão tudo, vai ter que mudar.