Getter e Setter retornando null, porque?

6 respostas
G

Eu nao estou entendendo o porque do erro, na 2ª classe está retornando valor null, alguem poderia me ajudar???
Trecho do Codigo Getter/Setter:

public class Dados {   
  
    private String caminho;   
    private String nome;   
  
   public String getCaminho() {   
        return caminho;   
    }   
  
    public void setCaminho(String caminho) {   
        this.caminho = caminho;   
  
  
    public String getNome() {   
        return nome;   
    }   
  
    public void setNome(String nome) {   
        this.nome = nome;   
    }   
}

Trecho da 1ª Classe

Dados d = new Dados();   
 public void obtemCaminho() {   
        JFileChooser arquivo = new JFileChooser();   
        int valor = arquivo.showOpenDialog(null);   
        if (valor == JFileChooser.APPROVE_OPTION) {   
            String caminho1 = arquivo.getSelectedFile().getAbsolutePath();   
            String nome1 = arquivo.getSelectedFile().getName();   
            d.setCaminho(caminho);   //setando os valores
            d.setNome(nome);   //setandoo os valores
           Compactar c = new Compactar();//chamando a 2ª classe na qual eu quero os valores   
           c.setVisible(true);   
       } else {   
            this.dispose();   
        }   
}

Trecho da 2ª Classe

public class Create extends javax.swing.JFrame {   
  
    
  
       
  
    public Create() {   
        initComponents();   
        Dados d = new Dados();   
        txtNomeArquivo.setText("" + d.getNome());// aqui eu quero os valores, mais estao retornando null   
        txtDirArquivo.setText("" + d.getCaminho());   
  
    }

Obrigado pela atenção!
}

6 Respostas

evertonsilvagomesjav

Ueh, vc esta criando um novo objeto ai no construtor de Create e usando ele logo abaixo, entao vai ser impresso os valores default das suas Strings que no caso é null.

ViniGodoy

E por que não deveria retornar null? Você em momento nenhum chamou o setNome, ou inicializou a variável nome.

juliocesarss
d.setCaminho(caminho);   //Esse parametro caminho vem de onde?
       d.setNome(nome);   //Esse parametro nome vem de onde?
evertonsilvagomesjav

Outra sua classe se chama Compactar ou Create? Porque no seu método obtemCaminho() vc instancia Compactar e fala que ela é onde vc quer ver os valores, e logo abaixo vc mostra sua classe Create :shock:

ViniGodoy

Ah sim, não é porque você preencheu um objeto com new Dados() em um lugar, que ele brotará como que por encantamento quando você der new Dados() em outro. Para o java, são objetos diferentes.

Se você quer que o trecho de código da 1a classe passe o objeto Dados para a segunda classe, terá que fazer uma passagem de parâmetros:

public class Create extends javax.swing.JFrame {   
    public Create(Dados dados) {   
        initComponents();   
        Dados d = dados;   
        txtNomeArquivo.setText("" + d.getNome());// aqui eu quero os valores, mais estao retornando null   
        txtDirArquivo.setText("" + d.getCaminho());   
    }   
}
E na 1a Classe:
public void obtemCaminho() {   
        JFileChooser arquivo = new JFileChooser();   
        int valor = arquivo.showOpenDialog(null);   
        if (valor == JFileChooser.APPROVE_OPTION) {   
            String caminho1 = arquivo.getSelectedFile().getAbsolutePath();   
            String nome1 = arquivo.getSelectedFile().getName();   
            Dados d = new Dados();   
            d.setCaminho(caminho);   //setando os valores
            d.setNome(nome);   //setandoo os valores
           Create c = new Create(dados);//Agora sim, passamos os dados.
           c.setVisible(true);   
       } else {   
            this.dispose();   
        }   
}

Isso também é exemplificado aqui:
http://www.guj.com.br/posts/list/55710.java#292687

G

ViniGodoy vlw, muito obrigado! To começando no java agora, ainda nao peguei as manhas.
vlw

Criado 22 de outubro de 2010
Ultima resposta 22 de out. de 2010
Respostas 6
Participantes 4