Página Inicial do Fórum > Java Básico

get retornando null!



Criar novo tópico   Responder tópico


  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    Bom dia!

    Possuo um JTextField nome e uma String nome que uso para converter o JTextField para usar em outra classe pois a outra classe gera um pdf que não aceita JTextField.

    Classe1


    Classe2



    Isto é um exemplo do que estou fazendo, não quis copiar pois está muito grande as classes!

    Creio eu que isto teoricamente deveria funcionar porém ao imprimir irá retornar null. (Ou seja quando inicializei a Classe1 na Classe2 era zerou as variáveis).

    ISto é um pouco lógico pois ao fazer new Classe1 tudo irá retornar ao seu estado de inicio, então vocês me recomendariam criar uma variável dentro do método modificador:



    Infelizmente e impressionantemente não funciona o compilador acusa a variável n não existir na Classe1(Lógicamente pois ela só inicia no método).

    Pensei em usar o Static mas sei que isso é uma má prática de programador e quero escrever meu código dentro das normas!

    Poderiam me ajudar?

    Achei que ja tinha passado desta fase de problemas de instancias ¬¬
    _________________
    Java é o poder!




  1. thiagovpalmeir
    Posts:1165


    Comment Arrow

    Publicado em: 30/07/2012 09:25:53

    Nessa Classe 2 ela tem que ser a classe principal




  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    Acho que não amigo pois para isso precisarei declarar a variável como estática e isso é uma prática incorreta!
    _________________
    Java é o poder!




  1. MathewsMotta
    Posts:1020


    Comment Arrow

    Publicado em: 30/07/2012 09:33:43

    Está um pouco confuso o que vc fez, pelo menos para mim...

    Mas, aparentemente, vc fez a classe que tem os métodos getNome e setNome na mesma classe que possui o JTextField...


    Sendo assim, quando preencher o JTextField, vc estará modificando a classe em si e não uma instância dela!

    Isso por si só é ruim ao meu ver.


    Agora, se o que acontece é diferente do que eu falei, sobre a Classe1 ser também a classe de interface gráfica(que possui o JTextField), então acredito que o problema é simplesmente de inicialização.


    Eu não saquei o pq de vc tentar fazer um construtor da Classe1 dentro da Classe2! Vc deveria inicializar a variável na Classe1.
    _________________
    ION, you're mine.




  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    Bom eu tentei de várias formas e ja rodei o google. Vou postar as duas classes aqui!

    Talvez contenha muitos erros o código mas please concentre-se no problema em questão!



    classe que precisa da variável nome para ser impressa no pdf


    _________________
    Java é o poder!




  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    Bom para não ficarem um pouco perdido o focu está:









    _________________
    Java é o poder!




  1. thiagovpalmeir
    Posts:1165


    Comment Arrow

    Publicado em: 30/07/2012 09:25:53

    Cara você tem essas linhas



    tenta fazer isso




    E nessas linhas você possui



    tenta fazer assim





  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    Fiz exatamente o que mandou, porém o resultado foi:

    Entrou nulo =[

    Algo tão facil, tão dificil, kkkk.

    Quando digita-se new Salvar();
    As variáveis tornam-se vazias, o que fazer para evitar isso Oo

    _________________
    Java é o poder!




  1. MathewsMotta
    Posts:1020


    Comment Arrow

    Publicado em: 30/07/2012 09:33:43

    O único jeito de 'n' ser nulo é se ele não receber o 'nomeStr'.

    Tem certeza que o método 'setConverterParaString()' está sendo chamado?

    Faça ele imprimir uma mensagem de confirmação!
    _________________
    ION, you're mine.




  1. thiagovpalmeir
    Posts:1165


    Comment Arrow

    Publicado em: 30/07/2012 09:25:53

    Beleza tenta fazer o seguinte

    faz uma condição ternária nas variáveis

    por exemplo



    é como um if else




  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    Mas amigo para que eu vou fazer condições se eu ja sei que ele está retornando null!


    _________________
    Java é o poder!




  1. MathewsMotta
    Posts:1020


    Comment Arrow

    Publicado em: 30/07/2012 09:33:43

    jeanjn
    Mas amigo para que eu vou fazer condições se eu ja sei que ele está retornando null!



    Se ele está retornando NULL, significa que ele não recebe nada. Se ele não recebe nada, fazer testes condicionais podem levar ao MOTIVO disso acontecer.
    _________________
    ION, you're mine.




  1. thiagovpalmeir
    Posts:1165


    Comment Arrow

    Publicado em: 30/07/2012 09:25:53

    Jean este é o teu código completo??

    tem como você inserir zipado para podermos testar?




  1. jeanjn
    Posts:50





  1. thiagovpalmeir
    Posts:1165


    Comment Arrow

    Publicado em: 30/07/2012 09:25:53

    Não estou conseguindo baixar se puder exportar o seu projeto ficaria mais fácil mande para o meu e-mail...

    verifiquei uma outra questão

    Você possui essas linhas



    mas não está adicionando elas

    tente o seguinte




  1. f.leno
    Posts:69


    Comment Arrow

    Publicado em: 30/07/2012 11:44:11

    amigo, creio que o problema está aqui:



    creio que ele não alterará o n por referência.

    Faça o seguinte, um método get que vai retornar o nomeStr, e onde você quiser que n receba o nomeStr basta colocar:





  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    O problema está em inicializar o construtor, eu não posso fazer isso, pois fazendo isto ele irá zerar todas as variáveis dentro do mesmo!

    Que modo fazer com que o construtor não zera a variável!
    _________________
    Java é o poder!




  1. f.leno
    Posts:69


    Comment Arrow

    Publicado em: 30/07/2012 11:44:11

    A idéia do construtor geralmente é zerar as variáveis.. vc está "construindo" um objeto novo, ou seja, sem relação com objetos anteriores.

    Se você quiser ter apenas uma instancia do objeto em todo o seu sistema utilize o padrão Singleton que o simu passou no outro tópico..

    Mas caso você não queira usá-lo, você vai ter q passar uma referencia do objeto que você alterou para utilizar os gets dele na outra classe...ou então passar os valores dele diretamente no construtor da classe que os utiliza.




  1. f.leno
    Posts:69


    Comment Arrow

    Publicado em: 30/07/2012 11:44:11

    por exemplo...no primeiro exemplo q vc passou:

    Você pode fazer assim:

    Classe1:



    Classe 2:


    Ou assimmelhor, pois o acoplamento é menor).

    Classe 2:




  1. staroski
    Posts:3375


    Comment Arrow

    Publicado em: 31/07/2012 09:18:37

    Aparentemente voce esta instanciando classes mais de uma vez, desnecessariamente.
    Porque não desenha um diagrama de sequencia?
    _________________
    Ricardo Artur Staroski, OCP-JP
    Blumenau - SC




  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    Bom tentei fazer o que o f.leno falou
    Porém retornou NoSuchMethodError

    Fiz exatamente o que ele mandou!


    Acusou erro nesta linha:



    que é onde o botão vai iniciar a classe!

    O método inteiro é esse:


    Demias detalhes da classe ta la em cima!

    Vlw
    _________________
    Java é o poder!




  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    Thiago desculpa a demora para lhe enviar é que estou com o tempo corrido, mas ainda essa semana lhe envio desde já agradeço sua ajuda!
    _________________
    Java é o poder!




  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    AAAA Leno olhando um site aqui descobri o porque deste erro, o programa não consegue localizar tão classe isso decorre por eu ter adcionado a Classe1 classe dentro do construtor da Classe 2.



    Então o que eu coloco dentro do
    _________________
    Java é o poder!




  1. thiagovpalmeir
    Posts:1165


    Comment Arrow

    Publicado em: 30/07/2012 09:25:53

    Tranquilo....tente fazer uma outra coisa, você possui essas linhas



    tente fazer dessa maneira



    tente fazer esse teste!




  1. f.leno
    Posts:69


    Comment Arrow

    Publicado em: 30/07/2012 11:44:11

    jeanjn
    AAAA Leno olhando um site aqui descobri o porque deste erro, o programa não consegue localizar tão classe isso decorre por eu ter adcionado a Classe1 classe dentro do construtor da Classe 2.



    Então o que eu coloco dentro do



    Você tem que passar uma instancia já inicializada da Classe1.

    Se você está querendo utilizar os atributos dela sem zerar, significa que já existiu em algum ponto um objeto com os atributos preenchidos.

    Você tem que passar esse objeto para a classe 2, em vez de instanciar novamente nela.

    Assim você não irá perder o conteúdo do objeto da classe 1




  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    Thiago tentei tbm desta maneira só alterando este método.. sme sucesso!

    QUem estiver afim de se aprofundar nesse problema, posta o email para que eu possa enviar o projeto!
    _________________
    Java é o poder!




  1. jeanjn
    Posts:50


    Comment Arrow

    Publicado em: 30/07/2012 09:21:56

    f.leno
    jeanjn
    AAAA Leno olhando um site aqui descobri o porque deste erro, o programa não consegue localizar tão classe isso decorre por eu ter adcionado a Classe1 classe dentro do construtor da Classe 2.



    Então o que eu coloco dentro do



    Você tem que passar uma instancia já inicializada da Classe1.

    Se você está querendo utilizar os atributos dela sem zerar, significa que já existiu em algum ponto um objeto com os atributos preenchidos.

    Você tem que passar esse objeto para a classe 2, em vez de instanciar novamente nela.

    Assim você não irá perder o conteúdo do objeto da classe 1




    Certo mas como eu poderia fazer isto, fiquei um pouco confuso não consigo pensar em nada como solução

    São muitas respostas diversificadas!
    _________________
    Java é o poder!




  1. f.leno
    Posts:69


    Comment Arrow

    Publicado em: 30/07/2012 11:44:11

    Não olhei muito detalhadamente seu código mas aparentemente se trocar isso já vai funcionar:

    de:


    para:


    de:


    para:





  1. Relacionados





Novo tópico   Responder tópico     Índice do forum -> Java Básico