Criar novo container HELP

6 respostas
M

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

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

6 Respostas

J

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!

M

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

J

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!

M

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

R

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)

M

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

Criado 21 de maio de 2004
Ultima resposta 22 de mai. de 2004
Respostas 6
Participantes 4