Criar novo container HELP

Não sei se vou conseguir me expressar bem, mas la vai…
eu quero fazer isso: quando um botao é precionado uma nova janela seja aberta com a Memoria1(), Memoria2() ou Memoria3(), porque quando eu clico no botao ele so sobreescreve o conteiner atual… segue ai o codigo…

[code]public class Memoria extends JFrame
{

Painel2 painel2;
Painel1 painel1;
Painel painel;
private JButton but1,but2,but3;
private JLabel texto;
private JPanel painel5,painel6;
Memoria()
{
			
	but1=new JButton("Fácil - 4x4 ");
	but2=new JButton("Médio - 6x6");
	but3=new JButton("Difícil - 8x8");
	texto =new JLabel("Escolha a dificuldade");
	
	painel5 =new JPanel();
	painel5.add(but1);
	painel5.add(but2);
	painel5.add(but3);
	painel5.add(texto);
	getContentPane().add(painel5);
	this.setSize(500,100);
	
   but1.addActionListener(
			new ActionListener()
				{
				public void actionPerformed(ActionEvent e)
					{
						 Memoria3();
					}
				} );
	but2.addActionListener(
					new ActionListener()
						{
						public void actionPerformed(ActionEvent e)
							{
	                  Memoria1();
							}
						} );
	but3.addActionListener(
					new ActionListener()
						{
						public void actionPerformed(ActionEvent e)
							{
	                  Memoria2();
							}
						} );	

          this.show();
	
}

void Memoria1()  //6x6//
	{
	painel = new Painel();
	this.getContentPane().add(painel);
	this.setTitle(" Memória 2004");
	this.setSize(800,600);
	this.show();
	}

void Memoria2()//8x8//
	{
		this.setTitle(" Memória 2004");
		this.setSize(1000,600);
	
		painel1 = new Painel1();
	
		this.getContentPane().add(painel1);
		this.show();
	

	}
void Memoria3()//4x4//
	{
		this.setTitle("Memoria 2004");
		this.setSize(800,600);
	
		painel2 = new Painel2();
	
		this.getContentPane().add(painel2);
		this.show();
	}


public static void main(String[] args)
{
	new Memoria();
}

}[/code]

mas o que vc está fazendo é mandar abrir no mesmo frame,
ps: olha os comments

void Memoria1()  //6x6//
      {
      painel = new Painel(); //cria um novo painel
      this.getContentPane().add(painel); //adiciona esse panel no frame atual
      this.setTitle(" Memória 2004"); //seta o title o frame atual
      this.setSize(800,600); // seta o tamanho do frame atual
      this.show();
      } 

por isso ele sobrescreve, o que vc poderia fazer é colocar cada “memoria” desse, em uma classe separada, e todas extends JFrame, dai ele iria criar uma nova janela pra ti.

deu pra entender?!

qqr coisa amanha te ajudo!

cya!

eu to iniciando em java :frowning:
entao se nao for pedir muito, gostaria da sua ajuda sim :cry: :cry:

bom entao vamos la…

vou montar mais ou menos aqui as classes tirando o código do seu programa…

bom ficou assim oh


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class Memoria extends JFrame
{

   JPanel painel2;
   JPanel painel1;
   JPanel painel;
   private JButton but1,but2,but3;
   private JLabel texto;
   private JPanel painel5,painel6;
   Memoria()
   {

      but1=new JButton("Fácil - 4x4 ");
      but2=new JButton("Médio - 6x6");
      but3=new JButton("Difícil - 8x8");
      texto =new JLabel("Escolha a dificuldade");

      painel5 =new JPanel();
      painel5.add(but1);
      painel5.add(but2);
      painel5.add(but3);
      painel5.add(texto);
      getContentPane().add(painel5);
      this.setSize(500,100);

       but1.addActionListener(
            new ActionListener()
               {
               public void actionPerformed(ActionEvent e)
                  {
                      new Memoria3();
                  }
               } );
      but2.addActionListener(
                  new ActionListener()
                     {
                     public void actionPerformed(ActionEvent e)
                        {
                        new Memoria1();
                        }
                     } );
      but3.addActionListener(
                  new ActionListener()
                     {
                     public void actionPerformed(ActionEvent e)
                        {
                         Memoria2 mem = new Memoria2();
                        }
                     } );

              this.show();

   }


   public static void main(String[] args)
   {
      new Memoria();
   }
}


class Memoria1 extends JFrame
{

      void Memoria1()  //6x6//
      {
      JPanel painel = new JPanel();
      this.getContentPane().add(painel);
      this.setTitle(" Memória 2004");
      this.setSize(800,600);
      this.show();
      }
}

class Memoria2 extends JFrame
{

      void Memoria2()//8x8//
      {
         this.setTitle(" Memória 2004");
         this.setSize(1000,600);

         JPanel painel1 = new JPanel();

         this.getContentPane().add(painel1);
         this.show();
      }
}

class Memoria3 extends JFrame
{

   void Memoria3()//4x4//
      {
         this.setTitle("Memoria 2004");
         this.setSize(800,600);

         JPanel painel2 = new JPanel();

         this.getContentPane().add(painel2);
         this.show();
      }
}

bom, soh tirei aqueles métodos e transformei eles em classe… e troquei onde vc tinha chamada de Painel1 por JPanel, nao sei se vc tem essas classes Painel ai… bom, nao rodei nem compilei… mas eh mais ou menos essa a lógica, dai vc adapta ai para suas necessidades!

ok!

cya! qqr coisa poste ai!

:smiley: :smiley: :smiley: Funcionou sim, muito obrigado pela ajuda!!! agora ta rodando bunitin!!! :smiley:

Deixa eu aproveitar a dúvida de nosso colega pra perguntar tbm… rsrs

Nesse caso ai… quando uma nova janela é aberta, como faz pra tipo desabilitar a janela principal enquando a outra estiver aberta? Como ficaria um botao na segunda que fechasse somente esta segunda janela?
Entenderam o quero fazer? rsrs :?

valeuzzz!! 8)

…pra deixar a janela inativa, use o método setEnabled( boolean b )