Olá!
Acredito que seja uma pergunta simples de responder, utilizo o Netbean, tenho duas classes , tenho uma váriavel na classe 1 e quero passar essa váriavel para a classe 2, estou tentando passar essa várivel
por parametro de um método
Olhem o código:
Classe 1
public void passa crm(){
String crm;
crm = this.crmLogin //Aqui tenho a informação do Login.
formCadAnalise referencia = new formCadAnalise(); //chamando a classe 2
referencia.metodoSecundario(crm); //passando o parametro crm
}
Classe 2
public void metodoSecundario(String pegouCrm); //string que recebe o parametro
{
this.pegacrm = pegouCrm; //Passando o valor do parametro para uma variavel declarada
}
Acontece que a variável vem Null, já tentei de diversas maneiras que encontrei no fórum e não rolou, as duas classes são públicas.
Na tua classe 2 você colocou dois pontos depois da declaração do método, sendo que ali vão somente as chaves. Ainda na classe 2, o atributo “pegacrm” não foi declarado.
Desculpa a cabaçada dos sinais ae, é que acabei digitando errado, agora a variavel eu não tinha declarado agora declarei dá uma olhada no código:
Classe 1
public class login extends javax.swing.JFrame {
public login() {
initComponents();
}
public void passaCrm(){
String CadastroSQL = "select crm,nome,pass,tipo from system_cad where nome=? AND pass=?";
try{
this.Conexao = (Connection) fabricaConexao.abreConexao();
PreparedStatement ps = (PreparedStatement) Conexao.prepareStatement(CadastroSQL);
ps.setString(1,campoLogin.getText());
ps.setString(2,campoSenha.getText());
ResultSet rs = ps.executeQuery();
while(rs.next()) {
this.crmLoginPega = rs.getString("crm");
this.nomeLoginPega = rs.getString("nome");
this.tipoLoginPega = rs.getString("tipo");
String crm;
String nome;
String tipo;
crm = this.crmLoginPega;
nome = this.nomeLoginPega;
tipo = this.tipoLoginPega;
formCadAnalise referencia = new formCadAnalise();
referencia.metodoSecundario(crm,nome,tipo);
}
}
catch(SQLException e){
e.printStackTrace();
}
}....................
public class formCadAnalise extends javax.swing.JInternalFrame {
public String pegaCrm;
public String pegaNome;
public String pegaTipo;
/** Creates new form formCadAnalise */
public formCadAnalise() {
initComponents();
}
public void metodoSecundario(String pegouCrm, String pegouNome, String pegouTipo){
this.pegaCrm = pegouCrm;
this.pegaNome = pegouNome;
this.pegaTipo = pegouTipo;
}...............
Dei um println nas variáveis da classe 1, ela me traz a string, mais na 2 ela chega nula, não sei o que faço. Alguma ídeia
Antes de mais nada você não acha que seria mais interessante não criar essa variável local, pois dessa forma acaba sendo redundânte com o código.
Faz o seguinte ao invés de ter uma String crm recebendo o this.crmLoginPega, passe o seu objeto direto ao método que quer preencher com os dados.
//Troque esse método :
public void passa crm() {
String crm;
crm = this.crmLogin //Aqui tenho a informação do Login.
formCadAnalise referencia = new formCadAnalise(); //chamando a classe 2
referencia.metodoSecundario(crm); //passando o parametro crm
}
//Por esse aqui:
public void passa crm() { //Dessa forma você poderá ajudar o garbage collector...
new formCadAnalise().metodSecundario(this.crmLogin);
}
E Coloca em modo debug e adiciona uns breakpoints e vai analisando o fluxo até chegar na classe dois, porque se os dados
estão na sua classe um, olhando assim eles teriam que setar a sua varíavel this.pegacrm.
[]…