Frames chamando outro frame

Galera to com um problema simples mas não estou sabendo resolver. Em meu TCC eu tenho um frame de tela inicial com um botão, esse botão quando clicado fecha este 1° frame e chama outro frame. Ate ai tudo bem. Mas quando eu crio um executável e clico nele para rodar o programa, o 1° frame não é chamado, já aparece o 2° que só deveria aparecer quando clicado no botão do 1° frame. Já criei na classe main um objeto do 1° frame, mas mesmo assim quando mando executar, já entra no 2° frame. Como resolvo isso?

Ola lucas8siqueira,

Segue meu código para resolver o seu problema, qualquer coisa estou a disposição …

CLASSE MAIN:

package framejava;

public class FrameJava {
	public static void main(String[] args) {
		new Frame1().setVisible(true);
	}
}

CLASSE JFRAME 1:


package framejava;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Frame1 extends JFrame {
	Frame1() {
		setTitle("FRAME 1");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(300,300);
		setLayout(new FlowLayout());
		JButton jb = new JButton("GO TO FRAME 2");
		jb.addActionListener(new actionGoToFrame2());
		getContentPane().add(jb);
	}
	
	class actionGoToFrame2 implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent ae) {
			setVisible(false);
			new Frame2().setVisible(true);
		}
		
	}
}

CLASSE JFRAME 2:

package framejava;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Frame2 extends JFrame {

	Frame2() {
		setTitle("FRAME 2");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(300,300);
		setLayout(new FlowLayout());
		
		JButton jb = new JButton("GO TO FRAME 1");
		jb.addActionListener(new actionGoToFrame1());
		getContentPane().add(jb);
	}

	class actionGoToFrame1 implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent ae) {
			setVisible(false);
			new Frame1().setVisible(true);
		}
		
	}	
	
}

Existem outras formas de fazer, mas acredito que assim fique fácil de visualizar … :slight_smile:

abs

Você não pode usar um Dialog ou InternalFrame?

luizpcam não esta funcionando dessa maneira que vc mandou. Existe outro geito?

Ola lucas8siqueira,

Você sabe me informar o erro? Porque aqui na minha máquina funcionou “liso”

abs

Procure usar o:

dispose();

Libera memória com diz o doc:
“Libera todos os recursos de tela nativa utilizados por esta janela, seus subcomponentes, e todos os seus filhos de propriedade.”

Cara não tem erro, o que acontece é que eu mando a classe main gerar um new frame1 mas ela gera um frame2. Isso ta muito extranho. Sera que é pq eu tinha criado o frame2 antes do frame1 e ja vinha trabalhando com o 2 a um tempo e por isso ele fica com uma especia de prioridade de execução?

Você sabe que ultimamente tenho tido uns problemas
estranhos com Java Swing. Uma coisa que era pra funcionar, código
compilando certinho e quando ia rodar, dava pau.
As vezes, código correto, mas não compilava.
Esses dias axei que estava com um problema trabalhando com iterator,
postei no Guj… Me deu na telha de abrir e fechar o programa (Netbeans), o mesmo rodou certinho.
Derepente, não sei se é possível, até mesmo recriar suas janelas janela…Rsrsr…
Mas, se aberto no Netbeans/Eclipse ele roda certinho e só dá pau como “.jar”, não
não poderia ajudar mais…