Buscar texto do get e jogar dentro do JtextField

Estou com um problema e acredito que deve ser algo bobo que estou esquecendo, uma pequena parte do programa é cadastrar um usuário com:

CPF
NOME
SENHA

Quando preenchido o Jtextfield lança isso lá na minha classe Pessoa() dentro do setNome por exemplo. Depois, tenho outra tela que é para teste, onde ele somente busca os dados que estão nas variáveis lá da classe pessoa… nada mais que estou fazendo que um GET e SET, porém, parece que ele executa o set novamente quando mudo de tela fazendo com o que o valor seja substituído por um campo vazio.

###Classe Pessoa

public class Pessoa {

    private String nome;
    private String cpf;
    private String senha;
    private String codigo;
    private String login;
    private String cargo;

    public String getCargo() {
        return cargo;
        
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

###Botão Cadastrar

CadastroPessoa.setCargo(jTextFieldCargo.getText());

Através do objeto CadastroPessoa lanço no setCargo o valor escrito notextfield (não vejo erro aqui)

###Botão Buscar

jTextFieldCargo.setText(CadastroPessoa.getCargo());

no JText seto o valor que está no get lá do CadastroPessoa

Ele não apresenta erro no código, verifiquei e quando executo para buscar, ele executa o get já sem nada escrito e depois executa o set. O que estou fazendo de errado?

Nesse seu exemplo aí, CadastroPessoa é um objeto ou uma classe?

Dá forma como está escrito o código, parece ser uma chamada à um método estático da classe CadastroPessoa, mas só dá pra afirmar vendo o código da classe.

Posta o código completo, tanto da classe onde tem esse botão cadastrar, quanto da classe CadastroPessoa .

Vou postar o código, mas apenas para confirmar CadastroPessoa é o objeto que criei da classe Pessoa();

verifica se tu não tá reiniciando o objeto CadastroPessoa

Tipo

//Executando o get

//CadastroPessoa = new CadastroPessoa();

// executa o set

Perfeito cara, você tem toda razão!

Tenho duas classes diferentes, que é “CadastrarTecnico” e “BuscarTecnico” são duas telas diferentes…

Para cada uma delas eu estou iniciando o objeto e entendi perfeitamente que está errado pois assim eu estou criando campos livres novamente… Porém, estou sem saber como fazer…

Digo, preciso acessar os campos get e set em duas classes diferentes, como fazer sem criar o objeto?

package modelo;

public class Pessoa {

private String nome;
private String cpf;
private String senha;
private String codigo;
private String login;
private String cargo;


public String getCargo() {
    return cargo;
}

public void setCargo(String cargo) {
   this.cargo = cargo;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getCpf() {
    return cpf;
}

public void setCpf(String cpf) {
    this.cpf = cpf;
}

public String getSenha() {
    return senha;
}

public void setSenha(String senha) {
    this.senha = senha;
}

public String getCodigo() {
    return codigo;
}

public void setCodigo(String codigo) {
    this.codigo = codigo;
}

public String getLogin() {
    return login;
}

public void setLogin(String login) {
    this.login = login;
}

}


package telas;

public class BuscarTecnico extends javax.swing.JPanel {

public BuscarTecnico() {
    initComponents();
}



private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    

}   

package telas;

import modelo.Pessoa;

public class CadastroTecnico extends javax.swing.JPanel {

Pessoa CadastroPessoa = new Pessoa();

public CadastroTecnico() {
    initComponents();
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    CadastroPessoa.setCargo(jTextFieldCargo.getText());

}   

Postei o código para vocês verem, na classe CadastroTecnico eu tenho o objeto para poder lançar o que foi escrito lá dentro das variáveis, reduzi deixando apenas o cadastro do cargo.

como faço agora lá no buscar para não precisar criar outro objeto e percebi que nem tem como né?! … Mas, como faço?

Obrigado

Passa o objeto pelo construtor

Cria um segundo método:

public BuscarTecnico() {
initComponents();
}

Pessoa cadastroP = new Pessoa();
public BuscarTecnico(Pessoa CadastroPessoa){
cadastroP = CadastroPessoa;

}

Tsuhiro, estou entendendo, mas não estou conseguindo aplicar…

Eu crio um outro construtor pedindo um valor do tipo objeto… Perfeito, dessa forma ele vai chamar um novo construtor “cadastroP” porém agora já preenchido…

Como lanço o valor lá do objeto para esse construtor?

Caso você instacie a tela BuscarTecnico a partir da de cadastro é só fazer o seguinte

na hora que for iniciar a tela BuscarTecnico …

BuscarTecnico buscar = new BuscarTecnico(CadastroPessoa); buscar.setVisible(true);

transfira o initComponents() para esse outro construtor também

Tsuhiro, me desuclpe, mas continue sem conseguir aplicar…

Olha…
Tenho no modelo Pessoa() dois construtores o defaut (vazio, padrão do java) e outro construtor com todas minhas variáveis

public Pessoa(String nome, String cpf, String senha, String codigo, String login, String cargo) {
this.nome = nome;
this.cpf = cpf;
this.senha = senha;
this.codigo = codigo;
this.login = login;
this.cargo = cargo;
}


Quando Cadastro, eu simplesmente crio um objeto de Pessoa e utilizo o set para jogar os valores, bleza… Tenho agora esse objeto todo preenchido…


Entendi que, preciso pegar esse objeto (Já que ele está preenchido) e utilizar ele para preencher o objeto que crio lá no BuscarPessoa… Correto?


Me da uma nova explicação em como jogo essas informações lá, não está entrando na minha cabeça mesmo… Agradeço a atenção dada até agora.

Cara, estou ficando maluco… porque… Olha só.

Estava fazendo uns testes com impressão de mensagem.

Depois que preencho as informações do objeto cadastrar logo abaixo criei outro objeto do Buscar passando como parâmetro o objeto que foi criado no cadastrar.

dei um JoptionPane pedindo o cargo e ele encontra, se eu coloco para imprimir dentro do construtor ele imprime também correto!

mas se eu coloco pra imprimir dentro da ação do objeto, aí ele não encontra…

Posta os fontes completos das suas classes, que fica fácil te mostrar o que alterar.

`package modelo;

public class Pessoa {

private String nome;
private String cpf;
private String senha;
private String codigo;
private String login;
private String cargo;

public String getCargo() {
    return cargo;
}

public void setCargo(String cargo) {
    this.cargo = cargo;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getCpf() {
    return cpf;
}

public void setCpf(String cpf) {
    this.cpf = cpf;
}

public String getSenha() {
    return senha;
}

public void setSenha(String senha) {
    this.senha = senha;
}

public String getCodigo() {
    return codigo;
}

public void setCodigo(String codigo) {
    this.codigo = codigo;
}

public String getLogin() {
    return login;
}

public void setLogin(String login) {
    this.login = login;
}

public Pessoa(String nome, String cpf, String senha, String codigo, String login, String cargo) {
    this.nome = nome;
    this.cpf = cpf;
    this.senha = senha;
    this.codigo = codigo;
    this.login = login;
    this.cargo = cargo;
}

public Pessoa() {

}

}


package telas;

import javax.swing.JOptionPane;
import modelo.Pessoa;

public class CadastroTecnico extends javax.swing.JPanel {

Pessoa CadastroPessoa = new Pessoa();


public CadastroTecnico() {
    initComponents();
}

@SuppressWarnings("unchecked")

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    CadastroPessoa.setCargo(jTextFieldCargo.getText());
    
    AlterarTecnico Alterar = new AlterarTecnico(CadastroPessoa);
    
   
}                                        

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
}                                     


// Variables declaration - do not modify                     
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JTextField jTextFieldCargo;
private javax.swing.JTextField jTextFieldCodigo;
private javax.swing.JTextField jTextFieldCpf;
private javax.swing.JTextField jTextFieldNome;
private javax.swing.JTextField jTextFieldSenha;
// End of variables declaration                   

}


package telas;

import javax.swing.JOptionPane;
import modelo.Pessoa;

public class AlterarTecnico extends javax.swing.JPanel {

Pessoa CadastroT = new Pessoa();

public AlterarTecnico() {
    initComponents();
}
    
public AlterarTecnico(Pessoa CadastroPessoa){
    CadastroT = CadastroPessoa;
    
    JOptionPane.showMessageDialog(null, CadastroT.getCargo());
}

@SuppressWarnings("unchecked")

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    jTextFieldCargo.setText(CadastroT.getCargo());

}                                        

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      


}                                     


// Variables declaration - do not modify                     
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JTextField jTextFieldCargo;
private javax.swing.JTextField jTextFieldCodigo;
private javax.swing.JTextField jTextFieldCpf;
private javax.swing.JTextField jTextFieldNome;
private javax.swing.JTextField jTextFieldSenha;
// End of variables declaration                   

}
`

Coloquei um JoptionPane dentro do construtor que pede o objeto como parâmetro, para ver se ele iria reconhecer como o campo preenchido…

a parte do BUSCAR, É ESSE ALTERAR… É QUE ELE JÁ BUSCA PARA NO CASO REALZIAR UMA ALTERAÇÃO

Para mim está tudo correto, não consegui ver o erro, tenta colocar o initComponents dentro do novo construtor

Não brinca comigo cara, eu estou igual ao Smigol, ama e odeia a si mesmo! kkkkkkkk…

Então, eu tentei colocar dentro do novo, mas ele apresenta erro a na classe principal na parte em que chamo o outro Jpanel, deixei os dois então escrevendo também o initi dentro do outro, apenas para ter a sobrecarga.

Mas não adianta eu clico no botão e ele não escreve…
pode apenas me confirmar que essa parte está correta?

jTextFieldCargo.setText(CadastroT.getCargo());

Teoricamente, aí ele está escrevendo (setando o texto) dentro da Jtextfield com o valor qeu ele buscou do objeto (QUE JÁ FOI PREENCHIDO) CadastroT no exato campo getCargo

Outra confirmação… nessa parte:

CadastroPessoa.setCargo(jTextFieldCargo.getText());

AlterarTecnico Alterar = new AlterarTecnico(CadastroPessoa);

na ação do meu botão eu seto o valor do meu objeto no campo setCargo… Beleza.

em baixo, no caso depois de executar esses procedimentos, eu crio o objeto e inicializo já o construtor já que estou passando com o paramêtro do objeto preenchido,

o objeto Alterar que foi esse último que criei, ele está não utilizado, ele fica assim mesmo?
Eu imagino que sim, pois apenas utilizo ele para inicializar o construtor para preencher aquele outro objeto.

É isso mesmo?

olha se não tá dando conflito entre o ActionPerformed e o MouseClicked

Não tenho como retirar o evento, mesmo ele estando vazio… E pelo menos nem o compilador está apontando o erro, segundo ele o código está limpo!

Não tenho mais ideia, sério memso!

Como assim? É só apagar.