Atribuição de valores entre TextFields de classes diferentes [RESOLVIDO]

6 respostas
wanderley.drumond
Pessoal preciso que ao carregar um frame o mesmo já receba as informações em seus TextFields os mesmos valores de um outro frame. Então fiz isso:
public Formulario(Dados_Pessoais dados_pessoais) {
        [color=red]tf_funcionarioRelatorio1.setText(Integer.toString(Dados_Pessoais.tf_funcionario));[/color]
        this.dados_pessoais = dados_pessoais;

        this.setVisible(false);
        setSize(476,330);

        setLocationRelativeTo(null);
        initComponents();
    }

Nessa linha dá erro dizendo que o acesso a variável que estou utilizando é private, mas eu a mudo para public ela continua dizendo a mesma coisa.

6 Respostas

ViniGodoy

Dê uma olhada:
http://www.guj.com.br/posts/list/55710.java#292687

wanderley.drumond

Não consegui entender o seu exemplo. O meu problema é mais simples. Seguinte: Tenho a classe Dados_Pessoais e dentro dela tenho, por exemplo o textfield tf_funcionario e quero passar o texto escrito nele para o textfield tf_funcionarioRelatorio que está dentro da classe Formulario. São duas classes diferentes entendeu?
Ah, tem também uma comboBox na classe Dados_Pessoais que eu quero passar o valor selecionado para um TextField na classe Formulario.

Será que teria como me ajudar nessa? Obrigado.

ViniGodoy

O que vc não entendeu? O exemplo mostra exatamente como passar dados entre telas diferentes.

wanderley.drumond

Bem, eu fiz o seguinte:

//Criando nova instãncia
cb_cargo = new javax.swing.JComboBox();

//Aqui é somente gráfico porque eu coloquei o ComboBox dentro de um JPanel e configurei o JPanel para ter borda com nome
cb_cargo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "GERENTE GERAL", "GERENTE DE TREINAMENTO", "GERENTE OPERACIONAL", "SUPERVISOR OPERACIONAL", "SUPERVISOR DE TREINAMENTO", "SECRETÁRIO", "AUXILIAR ADMINISTRATIVO", "AUXILIAR DE OPERADOR", "AUXILIAR DE SERVIÇOS GERAIS", "GUARDIÃO DE PISCINA", "OPERADOR DE PISCINA", "OPERADOR / GUARDIÃO", "MOTOBOY" }));
        cb_cargo.setBorder(null);

        javax.swing.GroupLayout p_cargoLayout = new javax.swing.GroupLayout(p_cargo);
        p_cargo.setLayout(p_cargoLayout);
        p_cargoLayout.setHorizontalGroup(
            p_cargoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(cb_cargo, 0, 188, Short.MAX_VALUE)
        );
        p_cargoLayout.setVerticalGroup(
            p_cargoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(cb_cargo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

//Declaração da variável
private javax.swing.JComboBox cb_cargo;

Mas o método construtor:

private JComboBox getTfFuncionario(){
        if (cb_cargo != null){
            return cb_cargo;
        }
    }

Aqui diz que falta o statement de retorno. Ou seja ele não entende o que o método retorna. Eu vi que ele retorna um JComboBox mas está dando erro.

Ah Vini, foi mal pelo outro tópico valeu?

wanderley.drumond

Eu criei o construtor na classe Dados_Pessoais:

public JTextField gettf_funcionario(){ return tf_funcionario; }

Na classe Formulario eu recebi os parâmetros:

this.dados_pessoais.gettf_funcionario().getText();

Mas deu erro de execução

<blockquote>Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException

at ciadapiscina.Formulario.<init>(Formulario.java:27)

at ciadapiscina.Dados_Pessoais.<init>(Dados_Pessoais.java:46)

at ciadapiscina.Main$1.run(Main.java:19)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)

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

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>

Esse erro quer dizer que eu não estou referenciando corretamente, certo?

MAs eu criei as instãncias das classes justamente afim de que elas possam se ver

//Criando nova instância do frame Formulario na classe Dados_Pessoais formulario = new Formulario(this);

E inicializei os Frames

//Na classe Dados_Pessoais: this.dados_pessoais = dados_pessoais; this.formulario = formulario;

//Na classe Formulario this.dados_pessoais = dados_pessoais;

Mas onde foi que eu errei?

wanderley.drumond

Consegui. Fiz isso:

Na classe 1, o método construtor:
public JTextField jtextfield1(){
        return jtextfield1;
    }

Na classe 2:

setJtextfield1(classe1.getJtextfield1());

public void setJtextfield1(JTextField jtextfield1) {
        this.jtextfield1.setText(jtextfield1.getText());
    }
Criado 28 de novembro de 2010
Ultima resposta 13 de dez. de 2010
Respostas 6
Participantes 2