[resolvido] = Erro metodo get Retorna null

Bom dia !

Pessoal, fiz a seguinte classe abaixo, porem o metodo get está retornando null.


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.text.MaskFormatter;

/**
 *
 * @author JavaX
 */
public class Configura {


    private String Modelo   ; 
    private String Gera     ;
    private String Contrato ;
    private String Peso     ;
    private String Postagem ;
    private String Arquivo  ;
    private String Contador ;
    private String Local    ;
    private String Estadual ;
    private String Nacional ;

    private MaskFormatter PostagemGet; 
    private JFormattedTextField Data;
  
    

//***** Começo Metodos Get(s) e  Set(s)    
 
public String getModelo() {
    return this.Modelo;
  }    

public void setModelo(String modelo) {
    this.Modelo = modelo;
}

public String getGera() {
    return this.Gera;
  }
public void setGera(String gera) {
    this.Gera = gera;
  }

public String getContrato() {
    System.out.println("Metodo dentro de Configuração getContrato()  = "+Contrato);
    return this.Contrato;
}

public void setContrato(String contrato) {
     this.Contrato = contrato;
     System.out.println("Metodo setContrato() = "+Contrato);
}

public String getPeso() {
    return this.Peso;
  }

public void setPeso(String peso) {
    this.Peso = peso;
  }

public String getPostagem() {
    try {                                                                       //----- \
      PostagemGet = new MaskFormatter(Postagem);                                //-------\   Funções Para Formatar Texto
      PostagemGet.setPlaceholderCharacter('_');                                 //-------/ 
    }                                                                           //------/
     catch (ParseException Erro) 
    {
      Erro.getMessage();
    }    
     Data = new JFormattedTextField(PostagemGet);
     return Data.getText();
  }

public void setPostagem(String postagem) {
    this.Postagem = postagem;
  }

public String getArquivo() {
    return this.Arquivo;
  }

public void setArquivo(String arquivo) {
    this.Arquivo = arquivo;
  }

public String getContador() {
   return this.Contador;
  }

public void setContador(String contador) {
    this.Contador = contador;
  }

public String getLocal() {
    return this.Local;
  }

public void setLocal(String local) {
    this.Local = local;
  }

public String getEstadual() {
   return this.Estadual;
  }

public void setEstadual(String estadual) {
    this.Estadual = estadual;
  }

public String getNacional() {
   return this.Nacional;
  }

public void setNacional(String nacional) {
    this.Nacional = nacional;
  }
//***** Final Metodos Get(s) e  Set(s)



//***** Final Carrega ComboBox

}

se alguém souber a razão desse erro e poder me dar uma ajuda.

Ficarei muito grato.

att…

JavaX

Primeiramente, deixe os atributos da classe sempre começando com letra minuscula. Ex: modelo, gera, contrato e caso tenha mais palavras, as proximas palavras com a primeira maisucula. Ex: enderecoCobranca, atributoComMaisPalavras, etc. Essa é a convenção Java :slight_smile:

Quanto a sua pergunta… provavelmente, vc nao está setando um valor para ela antes… está instanciando e depois já dando get. É preciso dar um setModelo(“modelo”), ou inicializar com um valor padrão. Ex: private String modelo = “Modelo Padrão”;

valeu igor _ks , pelo retorno mais sim estou setando como segue abaixo

tando é que dou System.out.println("Metodo setContrato() = "+Contrato); ele retorna normal o valor


private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
      JComboBox comboBox = (JComboBox) evt.getSource();
      Config.setModelo((String) comboBox.getSelectedItem());
    }                                          

    private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
      JComboBox comboBox = (JComboBox) evt.getSource();
      Config.setGera((String) comboBox.getSelectedItem());
    }                                          

    private void jComboBox3ActionPerformed(java.awt.event.ActionEvent evt) {                                           
      JComboBox comboBox = (JComboBox) evt.getSource();
      Config.setContrato((String) comboBox.getSelectedItem());
    }                                          

    private void jComboBox4ActionPerformed(java.awt.event.ActionEvent evt) {                                           
      JComboBox comboBox = (JComboBox) evt.getSource();
      Config.setPeso((String) comboBox.getSelectedItem());
    }                                          

Att…

JavaX

2 coisas para analisar…
Veja se teus comboBox.getSelectedItem() estão vindo valores corretamente…
E veja se a instancia que vc está usando para dar os sets é a mesma do get… e claro, que os sets sejam executados antes do get

[quote=igor_ks]2 coisas para analisar…
Veja se teus comboBox.getSelectedItem() estão vindo valores corretamente…
E veja se a instancia que vc está usando para dar os sets é a mesma do get… e claro, que os sets sejam executados antes do get[/quote]

igor_ks

é isso mesmo eu chamo a class de get e set em dois momento, um no formulário onde ele captura o comboBox, e em outra class onde eu preciso usar o que foi selecionado no comboBox, o problema está que quando cria a segunda instancia ele limpa o método get, preciso saber como resolver isso.

se você tiver alguma ideia .

grato javaX

É preciso utilizar a mesma instância… o mesmo objeto…

Pensa no velho exemplo da forma de bolo, onde:

  • A forma de bolo é a classe, e ela pode gerar diversos bolos, que são os objetos (as instancias)
  • Se vc tem dois bolos e der um setCobertura(chocolate) em um dos bolos, o outro certamente ficará sem cobertura, ou seja, se der um getCobertura() nesse outro bolo, ele não trará nada, pois ainda não foi setado nenhuma cobertura ainda, somente para o outro bolo.

[quote=igor_ks]É preciso utilizar a mesma instância… o mesmo objeto…

Pensa no velho exemplo da forma de bolo, onde:

  • A forma de bolo é a classe, e ela pode gerar diversos bolos, que são os objetos (as instancias)
  • Se vc tem dois bolos e der um setCobertura(chocolate) em um dos bolos, o outro certamente ficará sem cobertura, ou seja, se der um getCobertura() nesse outro bolo, ele não trará nada, pois ainda não foi setado nenhuma cobertura ainda, somente para o outro bolo.[/quote]

Solução abaixo:

   private static Configura instance = new Configura();

   private Configura() {

   }

   public static Configura getInstance() {
      return instance;
   }

Ola

Estou com o mesmo problema, esta solução foi incluída na classe Configura ou foi alterada a classe, seria possível postar o código todo?

Obrigado

Meu código está postado aqui:

Boa tarde eu venho tendo um problema parecido por exemplo

private String portDB ;
    
    public String getPortDB() {
        JOptionPane.showMessageDialog(null, "get: "+ portDB);
        return portDB;
        //apresenta null
    }

    public void setPortDB(String portDB) {
        this.portDB = portDB;
        JOptionPane.showMessageDialog(null, "set: "+portDB);
        //apresenta valor

    }

eu tenho esse get e set onde eu verifico no console que o set ta recebendo um valor porem o get não devolve o mesmo valor, entra valor e sai null alguém sabe dizer porque acontece isso?

Provavelmente você está chamando o set de um objeto e o get de outro.

Posta o código das classes onde você chama o set e o get.

Aqui é o meu metodo log que está na classe login por aqui faço o set de user, password e porta, detalhe usuario e senha funciona ok :

 public void log() {

        String pass = new String(passwd.getPassword());
        UserDTO objuserdto = new UserDTO();
        objuserdto.setUserDB(user.getText());
        objuserdto.setPassDB(pass);
        
        objuserdto.setPortDB(port.getText());
        

        //objuserdto.setPortDB(port.getText());
        try {

            UserDAO objuserdao = new UserDAO();
            ResultSet rsuserdao = objuserdao.userAuth(objuserdto);

            if (rsuserdao.next()) {
                MenuView screen = new MenuView();
                screen.setVisible(true);
                dispose();
            } else {
                JOptionPane.showMessageDialog(null, "User or password incorrect");
            }

        } catch (SQLException e) {
            System.err.println("" + e.getMessage());
            JOptionPane.showMessageDialog(null, "User or password incorrect, verify your connection");

        }

    }

e aqui tenho a classe conexionDAO onde quero setar a porta e chamo o get:

package DAO;

import DTO.UserDTO;
import java.sql.Connection;
import javax.swing.JOptionPane;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConexionDAO {

    String portcon = new UserDTO().getPortDB();

    public Connection connectDB() {
        Connection con = null;

        try {

            String url = "jdbc:jtds:sqlserver://localhost:" + portcon + "/cadastro;instance=SQLEXPRESS";
            con = DriverManager.getConnection(url, "sa", "senhatest");

        } catch (SQLException msg) {
            JOptionPane.showMessageDialog(null, "ConexionDAO " + msg);
        }
        return con;
    }
}

Você está criando um novo objeto do tipo UserDTO e em seguida está chamando o método getPortDB().

Tem que chamar o método no mesmo objeto UserDTO que foi criado lá na classe Login

1 curtida

Acabei mudando o projeto, então acabei chamando o numero da porta de um arquivo txt porque pensei que seria interessante que o usuario não posso mudar ou não necessite digitar em cada entrada a porta kkkkkk mas antes testei como me sugeriu e funciona perfeitamente. Te agradeço pela força, Valeu.