[RESOLVIDO]Passando valores por parâmetro para o Construtor

10 respostas
luis_serra

Bom eu tenho uma JFrame criada, com o botão salvar, nessa JFrame tb tenho os dados nome, endereço, telefone, rg, cpf, salario.
eu preciso pegar os valores desses campos e passar para os atributos da minha classe principal.
Bom eu tenho que usar o construtor pra isso, mais como faço para passar esses valores?
Ex:
Essa é minha classe que preciso receber os valores

public class Celetista extends javax.swing.JFrame {
    private String nome;
    private String endereco;
    private String telefone;
    private String RG;
    private String CPF;
    private double salario;

Esse Código abaixo é do botão salvar que pega os valores das variáveis que preciso.

private void bt_salvarActionPerformed(java.awt.event.ActionEvent evt) {//ação do botão salvar

       String nom=jt_nome.getText();                                                                 //pegar o texto da variável nome
       String end=jt_endereco.getText();                                                             //pegar o texto da variável endereco
       String tel=jt_telefone.getText();                                                                //pegar o texto da variável telefone
       String rg=jt_RG.getText();                                                                        //pegar o texto da variável RG
       String cpf=jt_CPF.getText();                                                                      //pegar o texto da variável CPF
       String salStr = jt_salario.getText();                                                            //pegar o texto da variável salario
       double sal=Double.parseDouble(salStr);                                                     //converter o valor da variável salario para double

}//fim da ação do botão salvar

a minha dúvida é exatamente essa, como passar esses valores pelo construtor para a minha classe?

eu tentei da seguinte forma mais ele não deixa usar como um método depois (axo que é por isso que dizem que o construtor não é um método né)
Esse é o construtor

public Celetista(String nome,String endereco,String telefone,String RG,String CPF, double salario) { this.nome=nome; this.endereco=endereco; this.telefone=telefone; this.RG=RG; this.CPF=CPF; this.salario=salario; initComponents(); }

e chamei ele assim dentro do meu actionperformed do botão salvar

Celetista(nom,end,tel,rg,cpf,sal);

mais da problema, uso o NetBeans e ele não deixa compilar.

10 Respostas

ViniGodoy

Ué:

Celetista celetista = new Celetista(nom, end, tel, rg, cpf, sal);

Ou, se quiser evitar criar variáveis inúteis:

Celetista celetista = new Celetista( jt_nome.getText(), jt_endereco.getText(), jt_telefone.getText(), jt_RG.getText(), jt_CPF.getText(), Double.parseDouble(jtSalario.getText()) );

luis_serra

ViniGodoy:
Ué:

Celetista celetista = new Celetista(nom, end, tel, rg, cpf, sal);

Ou, se quiser evitar criar variáveis inúteis:

Celetista celetista = new Celetista( jt_nome.getText(), jt_endereco.getText(), jt_telefone.getText(), jt_RG.getText(), jt_CPF.getText(), Double.parseDouble(jtSalario.getText()) );

Ele me gerou esses erros

run:

<blockquote>Exception in thread AWT-EventQueue-0 java.lang.NumberFormatException: empty String

at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:992)

at java.lang.Double.parseDouble(Double.java:510)

at ATPS.Celetista.bt_salvarActionPerformed(Celetista.java:155)

at ATPS.Celetista.access$000(Celetista.java:19)

at ATPS.Celetista$1.actionPerformed(Celetista.java:81)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)

at java.awt.Component.processMouseEvent(Component.java:6288)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:6053)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4651)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4481)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)

at java.awt.Container.dispatchEventImpl(Container.java:2085)

at java.awt.Window.dispatchEventImpl(Window.java:2478)

at java.awt.Component.dispatchEvent(Component.java:4481)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)

at java.awt.EventQueue.access$000(EventQueue.java:84)

at java.awt.EventQueue$1.run(EventQueue.java:602)

at java.awt.EventQueue$1.run(EventQueue.java:600)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)

at java.awt.EventQueue$2.run(EventQueue.java:616)

at java.awt.EventQueue$2.run(EventQueue.java:614)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

</blockquote>
luis_serra

ViniGodoy:
Ué:

Celetista celetista = new Celetista(nom, end, tel, rg, cpf, sal);

Ou, se quiser evitar criar variáveis inúteis:

Celetista celetista = new Celetista( jt_nome.getText(), jt_endereco.getText(), jt_telefone.getText(), jt_RG.getText(), jt_CPF.getText(), Double.parseDouble(jtSalario.getText()) );

ops o erro veiu pois eu estava deixando em branco os campos,
mais aí eu fiz um JOptionPane pra testar, e me retornou o nome como null

luis_serra

Ficou assim meu código

Essa minha classe
public class Celetista extends javax.swing.JFrame {

    private String nome;
    private String endereco;
    private String telefone;
    private String RG;
    private String CPF;
    private double salario;
Esse o construtor que eu criei
public Celetista(String nome, String endereco, String telefone, String RG, String CPF, double salario) {
        this.nome = nome;
        this.endereco = endereco;
        this.telefone = telefone;
        this.RG = RG;
        this.CPF = CPF;
        this.salario = salario;
    }
Esse é a ação do botão
private void bt_salvarActionPerformed(java.awt.event.ActionEvent evt) {
        Celetista celetista=new Celetista(
        jt_nome.getText(),
        jt_endereco.getText(),
        jt_telefone.getText(),
        jt_RG.getText(),
        jt_CPF.getText(),
        Double.parseDouble(jt_salario.getText()));
        imprimir();
    }
E essa o método imprimir o nome
public void imprimir() {
        JOptionPane.showMessageDialog(null, "O nome é:" + this.nome);
    }
luis_serra

O Projeto do NetBean está em anexo a essa mensagem, preciso urgente de uma solução para o meu problema, não estou encontrando em local algum, e já tentei de várias formas diferentes, não intendo o motivo que não consigo utilizar esses valores.

Eu fiz a classe principal que inicia, e só completei a parte Celetista, que não estou conseguindo passar por parâmetro para o construtor. Na vdd consigo mais quando imprimo ele aparece como null. Se alguém puder testar, estou com a cabeça a mil já por causa desse problema, so leigo ainda em JAVA.
Acredito ser algo MUITO simples mais que não to conseguindo.

P
Teu método de imprimir deve estar assim:
public void imprimir() {
        JOptionPane.showMessageDialog(null, "O nome é:" +jt_nome.getText());
        JOptionPane.showMessageDialog(null, "O Endereço é:" + jt_endereco.getText());
        JOptionPane.showMessageDialog(null, "O Telefone é:" + jt_telefone.getText());
        JOptionPane.showMessageDialog(null, "O RG é:" + jt_RG.getText());
        JOptionPane.showMessageDialog(null, "O CPF é:" + jt_CPF.getText());
        JOptionPane.showMessageDialog(null, "O salario é:" + jt_salario.getText());
       
    }
Ai vai funcionar de forma correta!
luis_serra
paty_trind:
Teu método de imprimir deve estar assim:
public void imprimir() {
        JOptionPane.showMessageDialog(null, "O nome é:" +jt_nome.getText());
        JOptionPane.showMessageDialog(null, "O Endereço é:" + jt_endereco.getText());
        JOptionPane.showMessageDialog(null, "O Telefone é:" + jt_telefone.getText());
        JOptionPane.showMessageDialog(null, "O RG é:" + jt_RG.getText());
        JOptionPane.showMessageDialog(null, "O CPF é:" + jt_CPF.getText());
        JOptionPane.showMessageDialog(null, "O salario é:" + jt_salario.getText());
       
    }
Ai vai funcionar de forma correta!

Então mais esse método imprimir é só pra mim testar se to conseguindo enviar os dados pra minha classe através do construtor, por isso que quando vo imprimir eu peço pra ele acessar i atributo da classe Celetista, eu preciso enviar o que recebo pelo formulário via construtor para a classe, assim posso recuperar ele mais tarde para poder fazer os calculos(No exercício que estou fazendo, está pedindo pra enviar via construtor para os atributos)

P
cria os métodos de acesso(get's e set's) e para ti testar tu coloca um print assim no teu método salvar:
private void bt_salvarActionPerformed(java.awt.event.ActionEvent evt) {

        String nom = jt_nome.getText(); //recebe o nome
        String en = jt_endereco.getText();//recebe o endereco
        String tel = jt_telefone.getText();//recebe o telefone
        String rg = jt_RG.getText();//recebe o RG
        String cpf = jt_CPF.getText();//recebe o CPF
        double sal = Double.parseDouble(jt_salario.getText());//recebe o salário e converte pra double
        cel = new Celetista(nom, en, tel, rg, cpf, sal);//instacia da variavel que criei mais acima
      
     [b]  System.out.println("Nome:"+cel.getNome()+" Endereço:"+cel.getEndereco());[/b]
       
 JOptionPane.showMessageDialog(null, nom);//esse eu criei pra ver se 
    
    }
luis_serra
paty_trind:
cria os métodos de acesso(get's e set's) e para ti testar tu coloca um print assim no teu método salvar:
private void bt_salvarActionPerformed(java.awt.event.ActionEvent evt) {

        String nom = jt_nome.getText(); //recebe o nome
        String en = jt_endereco.getText();//recebe o endereco
        String tel = jt_telefone.getText();//recebe o telefone
        String rg = jt_RG.getText();//recebe o RG
        String cpf = jt_CPF.getText();//recebe o CPF
        double sal = Double.parseDouble(jt_salario.getText());//recebe o salário e converte pra double
        cel = new Celetista(nom, en, tel, rg, cpf, sal);//instacia da variavel que criei mais acima
      
     [b]  System.out.println("Nome:"+cel.getNome()+" Endereço:"+cel.getEndereco());[/b]
       
 JOptionPane.showMessageDialog(null, nom);//esse eu criei pra ver se 
    
    }

daria certo tb, mais no exercício pede pelo construtor, por isso que fica complicado!!!

luis_serra

Galera consegui, na vdd está perfeito meu código, com apenas um erro (O motivo pelo retorno em null). Como sou novo em Java não tinha percebido isso a tempo, mais é vivendo e aprendendo né.

Bom o problema foi o seguinte, meu construtor está perfeito, os parâmetros também, mais eu pequei na hora de chamar o meu método imprimir().
o correto como instanciei, o código ficaria assim:

cel.imprimir();

e no meu Exemplo aí em cima estava assim:

imprimir();

foi um erro básico de mais, tomara que possa ajudar se alguém mais tiver um erro assim.

Criado 9 de outubro de 2011
Ultima resposta 12 de out. de 2011
Respostas 10
Participantes 3