Getter e Setter retornando null, porque?

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!
}

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.

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

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

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:

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:

[code]

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();
}
} [/code]

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

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