Chamar Janelas?

Tenho que fazer um trabalho da faculdade para cadastrar algumas besteiras,
ja tenho o menu pronto mas não estou conseguindo abrir outro Panel quando aperto algum botao do menu.Ja peguei o evento do botao so não deu certo mostrar o novo Panel ou Frame sei la…valeu

Eu não sei se vc já ouviu falar, mas outra maneira é vc colocar um JDesktopPane no ContentPane do JFrame, e adicionar as outras janelas ao desktop, usando o JInternalFrame.

:slight_smile:

Valeu galera, agora vou partir para o resto da classe de negocio, se o programa ficar bom eu coloco os fontes para a galera que ta iniciando essa aventura pelo java desktop!!!

Cara amigo

Na sua janela principal use Jframe e as outras use JDialog

na Frame principal use (no evendo do botão)

SuaJdialog dialog = new SuaJdialog(SeuFrame.this,true);

Na sua JDialog

setVisible(true);

Aki no meu funciona assim!!!

Deixa eu ver se eu entendi: você quer que, ao clicar de um botão, uma parte da sua janela mostre outra coisa - outro painel com os seus próprios componentes, não é isso?

Se for, eu tenho o que você precisa! E você também!

Senão vejamos: você tem um painel dentro do seu JFrame (sua janela) que deverá mudar ao clicar de um botão.

Bem, depois de você implementar a interface ActionListener e usar o método .addActionListener(<objeto>) nesse seu botão, você deve voltar as suas atenções para o painel que deverá mudar com o clique nele.

O segredo está no gerenciador de layout desse painel (o bicho que define como os componentes vão se organizar no espaço que ele ocupará na janela). Pegue esse painel e use o método:

             painelMãe.setLayout(new CardLayout());

CardLayout é uma classe que trata de fazer com que um só painel exiba no mesmo espaço o conteúdo de vários outros painéis, como um baralho de cartas cuja carta da frente vai mudando conforme a vontade de alguém.

Assim, os painéis que você quer exibir naquele espaço devem ser adicionados a esse painelMãe (o nome é por minha conta) pelo método .add(), mas com uma diferença: depois de colocar o painel a ser adicionado, você deve colocar uma String que o identifique.

            painelMãe.add(painelQualquer,"nomeQualquer");
            painelMãe.add(outroPainel,"OutroNome");
            // etc.

Isso será útil quando você for chamar o painel adicionado. Note que o primeiro painel a aparecer quando a janela for ativada será o painelUm, pois ele foi adicionado primeiro.

No método actionPerformed(), “onde as mágicas se realizam”, você deve criar um objeto da classe CardLayout dessa maneira:

public void actionPerformed(ActionEvent e){
CardLayout card= (CardLayout) painelMãe.getLayout();
(…)

Para fazer com que um clique do botão mostre um painel, faça:

   (...)
   if(e.getSource()==botaoQualquer)
           card.show(painelMãe, "nomeQualquer");

O método .show(<painel usado para construir o CardLayout>, &lt"nome dado a um dos painéis adicionados"&gt) tratará de exibir o que você quer onde você quer.

Para amansar qualquer outra dúvida, compile e rode este exemplo:

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

public class CardeLeiauti extends JFrame implements ActionListener
{
JPanel painelBotoes, painelCard, p1,p2,p3;
JButton b[], bpainel1, bpainel2, bpainel3;
JLabel l1, l2, l3;
JTextField t1, t2;

public CardeLeiauti(){

setTitle("Cardes!!!");
setSize(180,170);
// layout do container principal (da janela)
getContentPane().setLayout(new BorderLayout());

// inicializando os botões:
b=new JButton[6];
for(int i=0;i&lt6;i++) b[i]=new JButton("Botão "+i);

// criando botões responsáveis pela mudança do painel exibido
bpainel1=new JButton("Painel 1"); bpainel1.addActionListener(this);
bpainel2=new JButton("Painel 2"); bpainel1.addActionListener(this);
bpainel3=new JButton("Painel 3"); bpainel1.addActionListener(this);

l1=new JLabel("Este é o painel 1", JLabel.CENTER);
l2=new JLabel("Este é o painel 2", JLabel.CENTER);
l3=new JLabel("Este é o painel 3", JLabel.CENTER);

t1=new JTextField("Existem dez tipos de pessoas…", 20);
t2=new JTextField("as que entendem binário e as que não entendem",10);

// atenção aqui -------------------------------------------- !!! ----------
painelCard=new JPanel();
painelCard.setLayout(new CardLayout());
//------------------------------------------------------------------------------

painelBotoes=new JPanel();
painelBotoes.setLayout(new GridLayout(1,3));

//criando cada painel que será exibido:
p1=new JPanel();
p1.add(l1); p1.add(t1); p1.add(t2);

p2=new JPanel();
p2.setLayout(new GridLayout(4,1));
p2.add(l2); p2.add(b1); p2.add(b2); p2.add(b3);

p3=new JPanel();
p3.setLayout(new BorderLayout());
p3.add("North",b4); p3.add("Center",l3);
p3.add("East",b5); p3.add("South",b6);

// adicionando botões…
painelBotoes.add(bpainel1);
painelBotoes.add(bpainel2);
painelBotoes.add(bpainel3);

// atenção aqui --------------------------------------------- !!! -----------
painelCard.add(p1,"pa1");
painelCard.add(p2,"pa2");
painelCard.add(p3,"pa3");
//-------------------------------------------------------------------------------

getContentPane().add("North",painelBotoes);
getContentPane().add("Center",painelCard);

}// fim do construtor

// atenção aqui ---------------------------------------------------- !!! ----
public void actionPerformed(ActionEvent e){
// criando objeto que vai "virar a página", "passar a carta":
CardLayout c1=( (CardLayout) painelCard.getLayout() );

if(e.getSource==bpainel1)
c1.show(painelCard,"pa1"); // mostra "pa1" no painelCard.

if(e.getSource==bpainel2)
c1.show(painelCard,"pa2"); // mostra "pa2" no painelCard.

if(e.getSource==bpainel3)
c1.show(painelCard,"pa3"); // mostra "pa3" no painelCard.
}

}// O FIM

Além de show(), o objeto de CardLayout ainda tem outros métodos, como
previous(), next(), last() (ou goToLast(), não lembro…), e etc.

Ufa! Acho que exagerei. Nunca dei uma resposta tão grande.
Se houver algum erro no código, foi erro de digitação meu, mesmo.

Espero que tenha ajudado.

Boa sorte.