Ao tentar importar um txt (src\controle10\jogadores.txt) acionado pelo botao inferior (TXT).
Ocorre os seguinte erro:
java.lang.NullPointerException
at controle10.ImportaTXT.insereJgdrDoTxtParaArrayList(ImportaTXT.java:126)
at controle10.ImportaTXT.lerArquivo(ImportaTXT.java:65)
at grafico10.TtlRsvTelaPrincipal.actionPerformed(TtlRsvTelaPrincipal.java:246)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Nao sei onde estou errando.
Salvei o projeto nesse endereco pois sei q o grupo nao aceita anexos.
Cara… não simulei o projeto no eclipse… mas o erro é por que tem algum acesso a um método de um objeto que não foi instanciado. Tu sabe/consegue debugar o código e verificar em que parte está dando o erro no arquivo ImportaTXT.java ?
o split quebra a String…
vai ter problemas com ele…
utilize de substring se for tamanhos fixos…
ou então use algo para delimitar o tamanho fixo como por exemplo (tab) ou (|)
sempre que chegar nele, vc sabe que terminou aquela informação e seta no atributo.
Olha, eh provavel, mas nao eh 100% certeza disso.
Pois o mesmo split ja é utilizado de forma manual e nao apresenta problema.
Consigo cadastrar os jogadores um a um de forma manual.
Aih usando essa mesma metodologia, estou tentando fazer de forma a carregar uma lista de jogadores contida no TXT.
Assim penso q nao pode ser o split nesse caos, se ja consigo utiliza-lo de forma correta qdo cadastro os jogadores um a um de forma manual.
uma vez que usou ele por exemplo para cadastrar, como vc mesmo falou…
e depois usou para consultar… na primeira etapa ele quebrou tudo…
na segunda vez jah talvez nao tivece mais da forma correta…
Bom, eu acho que é isso… se não for tem que analisar, experimente debugar
Eclipse Galileo
Estou sim debugando
colocando breakpoints nos locais acusados pelo eclipse
Consigo inserir manualmente pelos metodos:
* Acionado pelo botao contratarJogadorJB chamo o metodo TtlRsvTelaPrincipal.contratarJogadorParaElenco;
* no metodo contratarJogadorParaElenco :
o instancio o incluiRJogadorPainel;
o apos preencher os dados do jogador, ao clicar no OK (Adicionar), chamo o metodo IncluiJogadorPainel.validarDadosInseridosPeloTreinador:
o no validarDadosInseridosPeloTreinador é feito uma checagem dos dados, estando tudo ok, retorna um true que me permite criar um novo jogador: Jogador jogador = new Jogador
o Apos criado o jogador, chamo o metodo titularesReservas.contrataJogador(jogador);
o o metodo contrataJogador insere o objeto jogador num ArrayList listaDeJogadores.add(jogador);
Esta inserido assim o meu jogador de forma manual.
Eh possivel ver o jogador inserido na tabela gerada quando pressiono o botao inferior direito demitirJogadorJB ( X demitir). O mesmo aciona TtlRsvTelaPrincipal.demitirJogadorNoElenco
Tentando aproveitar esse processo, para inserir no ArrayList listaDeJogadores os 22 jogadores via um arquivo TXT.
Ai entra a classe ImportaTXT.java:
* Clicando no botao lerJogadorTxtJB, aciono o metodo importaTXT.lerArquivo:
o o mesmo usa JFileChooser, apos selecionar o arquivo jogadores.txt:
o seleciona as linhas para inserir os jogadores : FileReader ler = new FileReader(nomeArquivo);
o pego a linha atual e a envio para o metodo ImportaTXT.insereJgdrDoTxtParaArrayList(linha);
o o metodo insereJgdrDoTxtParaArrayList usa o split para separar os dados da linha;
o apos o split coloco cada valor dentro das variaveis com as informacoes dos jogadores;
o instancio um painel e envio os valores para cada campo : IncluiJogadorPainel incluiRJogadorPainel = new IncluiJogadorPainel();
o mando validar os valores : incluiRJogadorPainel.validarDadosInseridosPeloTreinador();
o retornando um true chamo o metodo titularesReservas.contrataJogadorTXT(jogador);
o no metodo insere no Arraylist listaDeJogadores.add(jogador);
Essa seria a logica de funcionamento. Ao executar o debug do Eclipse:
Vou criar um jogador de forma manual : botao contratarJogadorJB - efetuado com sucesso
Clico em “X demitir” (demitirJogadorJB) para ver meu jogador criado - o jogador esta ali
Clicando em TXT (lerJogadorTxtJB):
importaTXT.lerArquivo(); OK
via JFileChooser abro o jogadores.txt; OK
Pego linha a linha pelo : BufferedReader leitor = new BufferedReader(ler); OK
envio a linha para o metodo :insereJgdrDoTxtParaArrayList(linha); OK
jogando a linha para as variaveis ; OK
instanciando paniel : IncluiJogadorPainel incluiRJogadorPainel = new IncluiJogadorPainel(); OK
setando valores do jogador : incluiRJogadorPainel.mtdSetaNomeJgdr(nomeJg);
(…)
incluiRJogadorPainel.mtdSetaIndiceTtlrddJgdr(idcTtlr); OK
validando os valores : incluiRJogadorPainel.validarDadosInseridosPeloTreinador ; ok
criando o objeto jogador : Jogador jogador = new Jogador ( ; OK
enviando o objeto jogador para o metodo : titularesReservas.contrataJogadorTXT(jogador); ERRO :
java.lang.NullPointerException
at controle10.ImportaTXT.insereJgdrDoTxtParaArrayList(ImportaTXT.java:132)
at controle10.ImportaTXT.lerArquivo(ImportaTXT.java:71)
at grafico10.TtlRsvTelaPrincipal.actionPerformed(TtlRsvTelaPrincipal.java:247)
Mostrar texto das mensagens anteriores -
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Assim termina meu debug, espero que tenha conseguido explicar o problema.
at controle10.ImportaTXT.insereJgdrDoTxtParaArrayList(ImportaTXT.java:132)
at controle10.ImportaTXT.lerArquivo(ImportaTXT.java:71)
at grafico10.TtlRsvTelaPrincipal.actionPerformed(TtlRsvTelaPrincipal.java:247)
Ele não ta conseguindo ler do Txt…
Faz o seguinte, crie 2 txt iguais… e use 1 para a parte de cadastro
e outro para a parte de demissão
Olá pessoal, nao sei se deveria postar esta duvida aki, mas lá vai. Sou iniciante em Java e estou desenvolvendo um aplicativo que lê arquivos texto e extrai alguns dados. O problema é que tenho que ler vários arquivos e todos estao na codificacao ANSI, assim palavras com acento nao sao reconhecidas, por exemplo, pego uma linha e a salvo numa string, depois vejo se nesta string tem alguma informacao que quero e salvo parte desta string. Assim, consigo encontrar os dados caso mude a configuracao do arquivo de ANSI para UTF-8. Pergunta: tem como eu mudar a codificacao do arquivo de forma automatizada, para que nao seja necessario alterar manualmente, já que sao varios.