Chamar objeto de outra Classe

1 resposta
adriano-itupeva

Ola comunidade…
Galera tenho um objeto Pai que ao iniciar ele pede usuario e quando clicamos em Ok ele abre um outro filho e la onde quero chamar o Usuario nao estou conseguindo quando é aberto o Filho ao clicar em Ok ele deveria mostrar o Usuario que esta em Pai mas nao consigo fazer isto, segue abaixo::

[color=blue]
//Classe Pai.java

import java.awt.<em>;

import javax.swing.</em>;

import java.awt.event.*;
public class Pai extends JFrame implements ActionListener{

public JTextField txtusuario;

public String     usuario;

public JButton    btn;

private Container cont;

private JPanel painel;
public Pai(){
          super("Teste");
          BorderLayout layout = new BorderLayout();
          cont = getContentPane();
          cont.setLayout(layout);

          painel = new JPanel(new FlowLayout(FlowLayout.LEFT));

          txtusuario = new JTextField(20);
          painel.add(txtusuario);

          JButton btn = new JButton("OK");
          painel.add(btn);
          btn.addActionListener(this);

          cont.add(painel);
          setLocationRelativeTo(null);
          setResizable(false);
          setSize(300,70);
          setVisible(true);

    }

    public static void main(String args[]) {
           new Pai();
    }
    public void actionPerformed(ActionEvent e) {
           if (e.getActionCommand() == "OK")  PegarValor();
    }

    public void PegarValor() {
           Filho filho = new Filho();
    }

    [/color][color=green]//nao sei se é este o jeito de fazer._____[/color][color=blue]
    public void getUsuario(){    //retorna o usuario
           usuario = txtusuario.getText();

    }

} //fim [/color]

[color=red]__________________________________________________[/color]

[color=green]// Classe Filho

import java.awt.<em>;

import javax.swing.</em>;

import java.awt.event.*;
public class Filho extends JFrame implements ActionListener {

private JButton botao;

Pai pai;

private Container cont;

private JPanel painel;
public  Filho(){
          cont = getContentPane();
          BorderLayout layout = (new BorderLayout());
          cont.setLayout(layout);

          painel = new JPanel(new FlowLayout(FlowLayout.LEFT));

          botao = new JButton("Pegar Usuario do Pai");
          botao.addActionListener(this);
          painel.add(botao);

          cont.add(painel);

          setSize(300,300);
          setResizable(false);
          setVisible(true);
          setLocationRelativeTo(null);
    }
    public void actionPerformed(ActionEvent e){
           if (e.getSource() == botao) Retornar();
    }

    [/color][color=blue]//____acho que o problema esta aqui___________[/color][color=green]
    public void Retornar() {        //pega Usuario  do Pai, mas nao estou conseguindo fazer isto
           pai.PegarValor();
           JOptionPane.showMessageDialog(null, pai.usuario);
    }

}//fim [/color]

[color=red]_____________________________________________[/color]

pensei em fazer uma classe abstrata, mas nao sei qual é o modo mais correto, se alguem puder me ajudar eu agradeço.

obrigado
Adriano

1 Resposta

dsfextreme
Prmeiro declara esta linha public static Pai pai;  na Classe pai.

Mude aqui

public static void main(String args[]) {

pai = new Pai();

}

aqui

[i]public void actionPerformed(ActionEvent e) {

if (e.getActionCommand() == OK)

setUsuario(txtusuario.getText());
PegarValor();
	
}[/i]

//Este é o jeito de fazer.
//retorna o usuario
public String getUsuario() { 
	 return this.usuario;

}

public void setUsuario(String usuario) {
	this.usuario = usuario;
}

public static Pai getPai() {
	return pai;
}

e por último no filho

[i]//<strong><strong>acho que o problema esta aqui</strong></strong>_______

public void Retornar() { //pega Usuario do Pai, mas nao estou conseguindo fazer isto

pai = GetInstance(pai);

JOptionPane.showMessageDialog(null, pai.getUsuario());

}

private Pai GetInstance(Pai pai2) {
return pai.getPai();

} [/i]


Criado 21 de abril de 2006
Ultima resposta 22 de abr. de 2006
Respostas 1
Participantes 2