Entre Janelas

12 respostas
reizin

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.

12 Respostas

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("...");
reizin

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

Obrigado

danieldestro

Que tal:

public class SeuFrame extends JFrame {
  public JFrame framePai;

  //...
}
SeuFrame f = new SeuFrame();
f.framePai = this;
f.show();
reizin

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).

danieldestro

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

reizin

.

reizin
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("...");
Fiz isso:
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);
			}
		}
	}
}
Outra Classe:
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();
			}
		}
	}
}

Só que tá dando o seguinte erro quando cai na linha

exer.dado.setText("Funcionou");
:
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)

O que posso fazer com isso....

danieldestro

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); } } }

reizin

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?

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

reizin

ALELUIA !!!

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

Deu certinho. Muito obrigado mesmo.

Falow

danieldestro

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

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

Criado 5 de julho de 2005
Ultima resposta 5 de jul. de 2005
Respostas 12
Participantes 3