Alô galera do GUJ, Gostaria de compartilhar esse código que criei mostrando como navegar entre telas utilizando somente o JFrame do pacote Swing. Antes de consegui fui a diversos fóruns onde não consegui informação o suficiente para construir a passagem de telas só utilizando os JFrames, muitos me aconselharam a esquecer e utilizar o JDesktopPane ou o JInternalFrame que não deixavam a aparência como eu queria, segue aí o código com a minha programação com 4 classes, sendo 3 Janelas e 1 classe de controle com o MouseListener também podendo ser trocado pelo ActionListener.
Janela 1 Branca
import java.awt.Color;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Janela1 extends JFrame implements Observer {
private JPanel pnl;
private JLabel btnAzul1, btnPreto1;
private Controle controle;
public Janela1() {
controle = new Controle(this, null, null);
controle.addObserver(this);
setBounds(0, 0, 800,600);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(null);
pnl = new JPanel();
pnl.setBounds(0, 0, 800, 600);
pnl.setVisible(true);
pnl.setBackground(Color.WHITE);
btnAzul1 = new JLabel("Azul");
btnPreto1 = new JLabel("Preto");
btnAzul1.addMouseListener(controle);
btnPreto1.addMouseListener(controle);
pnl.add(btnAzul1);
pnl.add(btnPreto1);
add(pnl);
}
public JPanel getPnl() {return pnl;}
public JLabel getBtnAzul1() {return btnAzul1;}
public JLabel getBtnPreto1() {return btnPreto1;}
public Controle getControle() { return controle;}
@Override
public void update(Observable o, Object arg) {}
}
Janela 2 Preta
import java.awt.Color;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Janela2 extends JFrame implements Observer{
private JPanel pnl;
private JLabel btnAzul2, btnBranco2;
private Controle controle;
public Janela2() {
controle = new Controle(null, this, null);
controle.addObserver(this);
setBounds(0, 0, 800,600);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(null);
pnl = new JPanel();
pnl.setBounds(0, 0, 800, 600);
pnl.setVisible(true);
pnl.setBackground(Color.BLACK);
btnAzul2 = new JLabel("Azul");
btnBranco2 = new JLabel("Branco");
btnAzul2.addMouseListener(controle);
btnBranco2.addMouseListener(controle);
pnl.add(btnAzul2);
pnl.add(btnBranco2);
add(pnl);
}
public JPanel getPnl() {return pnl;}
public JLabel getBtnAzul2() {return btnAzul2;}
public JLabel getBtnBranco2() { return btnBranco2;}
public Controle getControle() {return controle;}
@Override
public void update(Observable o, Object arg) {}
}
Janela 3 Azul
import java.awt.Color;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Janela3 extends JFrame implements Observer{
private JPanel pnl;
private JLabel btnPreto3, btnBranco3;
private Controle controle;
public Janela3() {
controle = new Controle(null, null, this);
controle.addObserver(this);
setBounds(0, 0, 800,600);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(null);
pnl = new JPanel();
pnl.setBounds(0, 0, 800, 600);
pnl.setVisible(true);
pnl.setBackground(Color.BLUE);
btnPreto3 = new JLabel("Preto");
btnBranco3 = new JLabel("Branco");
btnPreto3.addMouseListener(controle);
btnBranco3.addMouseListener(controle);
pnl.add(btnPreto3);
pnl.add(btnBranco3);
add(pnl);
}
public JPanel getPnl() {return pnl;}
public JLabel getBtnPreto3() {return btnPreto3;}
public JLabel getBtnBranco3() {return btnBranco3;}
public Controle getControle() {return controle;}
@Override
public void update(Observable o, Object arg) {}
}
Controle
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Observable;
public class Controle extends Observable implements MouseListener {
private static Janela1 jan1;
private static Janela2 jan2;
private static Janela3 jan3;
public Controle(Janela1 jan1, Janela2 jan2, Janela3 jan3) {
this.jan1 = jan1;
this.jan2 = jan2;
this.jan3 = jan3;
}
public static void main(String[] args) {
jan1 = new Janela1();
}
@Override
public void mouseClicked(MouseEvent e) {
if(jan1!=null){
if(e.getSource().equals(jan1.getBtnAzul1())){
System.out.println("1.1");
if(jan3==null){
jan1.dispose();
jan3 = new Janela3();
}else{
jan1.dispose();
jan3.setVisible(true);
}
}
}
if(jan1!=null){
if(e.getSource().equals(jan1.getBtnPreto1())){
if(jan2==null){
jan1.dispose();
jan2 = new Janela2();
}else{
jan1.dispose();
jan2.setVisible(true);
}
}
}
if(jan2!=null){
if(e.getSource().equals(jan2.getBtnAzul2())){
if(jan3==null){
jan2.dispose();
jan3 = new Janela3();
}else{
jan2.dispose();
jan3.setVisible(true);
}
}
}
if(jan2!=null){
if(e.getSource().equals(jan2.getBtnBranco2())){
System.out.println("2.2");
if(jan1==null){
jan2.dispose();
jan1 = new Janela1();
}else{
jan2.dispose();
jan1.setVisible(true);
}
}
}
if(jan3!=null){
if(e.getSource().equals(jan3.getBtnPreto3())){
System.out.println("3.1");
if(jan2==null){
jan3.dispose();
jan2 = new Janela2();
}else{
jan3.dispose();
jan2.setVisible(true);
}
}
}
if(jan3!=null){
if(e.getSource().equals(jan3.getBtnBranco3())){
System.out.println("3.2");
if(jan1==null){
jan3.dispose();
jan1 = new Janela1();
}else{
jan3.dispose();
jan1.setVisible(true);
}
}
}
}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
}