Mudar de uma tela para outra [RESOLVIDO]

3 respostas
ciceromv

Olá. Sou iniciante em Java, estou utilizando o Eclipse e fazendo uso do Swing para criar um programa que tem algumas janelas. Minha dúvida é: como fazer para que ao clicar em um botão, a janela tenha sua aparência modificada, passando a mostrar outros componentes. E, quando clicar em outro botão, passe a mostrar a janela incial.

Nota: Não necessariamente tem que ser outra janela, apenas a aparencia tem que mudar. Só não quero colocar setVisible(false), ou setVisiblie(true) em tudo. :slight_smile:

Tipo : Janela A, clico no botão x, passa a mostrar a janela B
Janela B, clico no botão y, passa a mostrar a janela A .

valews :slight_smile:

3 Respostas

Nicolas_Fernandes

Olá, ciceromv!

Cara… Coloque a “Janela A” em um “Panel A” e a “Janela B” em um “Panel B”.

Quando clicar no botão X, dê setVisible(false) no seu Panel A, e setVisible(true) no Panel B, e vice-versa.

É o mais prático a se fazer, penso eu!

Espero ter ajudado!

[]'s

criador

Você pode usar o layout de “cartões” ou CardLayout (http://java.sun.com/docs/books/tutorial/uiswing/layout/card.html).
Assim você trabalha como se fosse uma tela em cada “cartão”, como uma instalação de qualquer programa.

Abraço!

ciceromv

Resolvi o problema utilizando uma Janela Modal e separando do primeiro Frame

códio exemplo para cria a Janela Modal

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class NewTeste {
   public static void main(String[] args) {
      DialogFrame frame = new DialogFrame();
      frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      frame.setVisible( true );
   }
}
class DialogFrame extends JFrame{
   public DialogFrame(){
      setTitle("DialogFrame");
      setSize( DEFAULT_WIDTH, DEFAULT_HEIGHT );
      JMenuBar menuBar = new JMenuBar();
      setJMenuBar( menuBar );
      JMenu fileMenu = new JMenu("File");
      menuBar.add( fileMenu );
      JMenuItem aboutItem = new JMenuItem("About");
      aboutItem.addActionListener( new ActionListener(){
         public void actionPerformed( ActionEvent event )
         {
            if( dialog == null ) // primeira vez
               dialog = new AboutDialog( DialogFrame.this );
            dialog.setVisible( true );
         }
      });
      fileMenu.add( aboutItem );
      JMenuItem exitItem = new JMenuItem("Exit");
      exitItem.addActionListener( new ActionListener(){
         public void actionPerformed( ActionEvent event )
         {
            System.exit(0);
         }
      });
      fileMenu.add( exitItem );
   }
   public static final int DEFAULT_WIDTH = 300;
   public static final int DEFAULT_HEIGHT = 200;
   private AboutDialog dialog;
}
class AboutDialog extends JDialog{
   public AboutDialog( JFrame owner ){
super( owner, "About DialogTeste", true );
      add( new JLabel( "<html><h1><i>Core Java</i></h1><hr>www.javafree.org</html>" ) , 
BorderLayout.CENTER  );
      JButton ok = new JButton("Ok");
      ok.addActionListener( new ActionListener(){
         public void actionPerformed( ActionEvent event ){
            setVisible( false );
         }
      });
      JPanel panel = new JPanel();
      panel.add( ok );
      add( panel, BorderLayout.SOUTH );
      setSize( 250, 150 );
   }
}
Criado 20 de outubro de 2009
Ultima resposta 24 de jan. de 2010
Respostas 3
Participantes 3