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!
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!
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 )