Entre Janelas

Bom dia…

Gostaria de saber como fazer isso…
Tenho um JFrame (uma classe) que cadastra usuários, dentro do cadastro existe um botão de buscar cidade. Quando clico em buscar, abre um JWindow (outra Classe) para inserir os parâmetros de busca.
Como faço para que, ao encontrar a cidade desejada, ele retorne o nome cidade para um JTextField do meu JFrame de cadastro e feche a JWindow?

Tenho uma outra classe com get’s e set’s. Mas ele só atualiza o meu JTextField do JFrame cadastro, quando clico em busca novamente.
Gostaria de setar a cidade no meu JTextField, quando fechar a minha JWindow de pesquisa.

Compliquei o questionamento, neh???
Mas, tá aí… Quem puder me auxiliar, fico grato.

Qdo vc criar o seu JWindow (Tela de busca de cidades), passe a instancia do seu JFrame (Tela cadastro de usuarios), assim vc pode setar o JTextField.

Algo como:

    cadastroUsuarioFrame.getNomeCidadeTextField.setText("...");

Me desculpe pela ignorância…
Como devo passar a instância do meu JFrame?

Obrigado

Que tal:

[code]public class SeuFrame extends JFrame {
public JFrame framePai;

//…
}[/code]

SeuFrame f = new SeuFrame(); f.framePai = this; f.show();

Não estou conseguindo, será que alguém poderia postar um código assim:

Uma tela principal com 1 JtextField e 1 JButton, quando clicar no JButton, abre outra janela, também com 1 JTextField e 1 JButton. O que eu digitar no JTextField dessa segunda tela, deverá aparecer no JTextField da primeira quando eu clicar no JButton da tela (segunda Tela).

Cara, melhor você voltar ao início e estudar java básico e conceitos de OO.

.

[quote=leonardom]Qdo vc criar o seu JWindow (Tela de busca de cidades), passe a instancia do seu JFrame (Tela cadastro de usuarios), assim vc pode setar o JTextField.

Algo como:

cadastroUsuarioFrame.getNomeCidadeTextField.setText("..."); [/quote]

Fiz isso:

[code]
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Exercicio01 extends JFrame
{
JTextField dado;

private JButton btIncluir;

public Exercicio01()
{
	super("Teste");

	Container container = getContentPane();

	container.setLayout(new FlowLayout());

	dado = new JTextField(15);
	container.add(dado);
	btIncluir = new JButton("Incluir");
	container.add(btIncluir);
	AcaoBotao acao = new AcaoBotao();
	btIncluir.addActionListener(acao);
	setSize(200, 120);
	setVisible(true);
}

public static void main(String args[])
{
	Exercicio01 inicia = new Exercicio01();
	inicia.setDefaultCloseOperation(EXIT_ON_CLOSE);

}

private class AcaoBotao implements ActionListener
{
	public void actionPerformed(ActionEvent evento)
	{
		if (evento.getSource() == btIncluir)
		{
			Exercicio02 i = new Exercicio02();
			i.setVisible(true);
		}
	}
}

}[/code]

Outra Classe:

[code]
package te;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Exercicio02 extends JFrame
{
Exercicio01 exer;

private JTextField entradaDados;

private JButton btIncluir;

public Exercicio02()
{
    super("Tela que envia");
	Container container = getContentPane();
	container.setLayout(new FlowLayout());
	entradaDados = new JTextField(15);
	container.add(entradaDados);
	btIncluir = new JButton("Incluir");
	container.add(btIncluir);
	AcaoBotao acao = new AcaoBotao();
	btIncluir.addActionListener(acao);
	setSize(200, 120);
    setVisible(true);
    setLocation(200,200);
}

private class AcaoBotao implements ActionListener
{
	public void actionPerformed(ActionEvent evento)
	{
		if (evento.getSource() == btIncluir)
		{
			exer.dado.setText("Funcionou");
			dispose();
		}
	}
}

}[/code]

Só que tá dando o seguinte erro quando cai na linha [quote]exer.dado.setText(“Funcionou”);[/quote]:

[quote]java.lang.NullPointerException
at te.Exercicio02$AcaoBotao.actionPerformed(Exercicio02.java:42)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
[/quote]

O que posso fazer com isso…

Você está tentando acessar a variável exer sem ter um objeto nela.

Mude o trecho de código da classe Exercicio01 para:

private class AcaoBotao implements ActionListener { public void actionPerformed(ActionEvent evento) { if (evento.getSource() == btIncluir) { Exercicio02 i = new Exercicio02(); i.exer = this; i.setVisible(true); } } }

Daniel, eu agradeço bastante pela PACIENCIA (e como!!!)…

Eu tentei passar “this” para “i.exec”, só que dá erro de Incompatibilidade de tipo…

O que poderia ser isto?

Como erro de tipos? Impossível! Segundo o seu código os tipos são os mesmos.

Oooppssss… agora eu ví mesmo.

ao invés de:

i.exer = this;

faça

i.exer = Exercicio01.this;

Abraços

ALELUIA !!!

Muitíssimo obrigado pela ajuda e paciência…
Realmente tenho que estudar… E muito.

Deu certinho. Muito obrigado mesmo.

Falow

[quote=danieldestro]Como erro de tipos? Impossível! Segundo o seu código os tipos são os mesmos.

Oooppssss… agora eu ví mesmo.

ao invés de:

i.exer = this;

faça

i.exer = Exercicio01.this;

Abraços[/quote]

Neste caso, o this era a referência para a instãncia de ActionListener e não de Exercicio01.