Como altenar várias JPanel em um única JFrame?

2 respostas
alexandref93

Tentei aqui mais não consegui, fiz um código bem simples, só pra ver ser era possível!!!

por exemplo quando eu clico no JMenuBar no Painel1 aparece o Painel1, e quando clico no Painel2 aparece o Painel2 no mesmo JFrame, escodendo o Painel1!!! Mais não consegui até agora!!! É possivel???

Classe que extends JFrame:

package variospanel;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;

public class FrameMain extends JFrame {

    JMenuBar barra = new JMenuBar();

    JMenu menu = new JMenu("Painel1");
    JMenu menu2 = new JMenu("Painel2");
    Painel1 p1 = new Painel1();
    Painel2 p2 =  new Painel2();

    public FrameMain(){
        setSize(500, 500);
        setJMenuBar(barra);
        barra.add(menu);
        barra.add(menu2);
        getContentPane().add(p1);
        getContentPane().add(p2);
        menu.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {
                p2.setVisible(true);
                p1.setVisible(true);
            }
        });
        menu2.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {
                p1.setVisible(false);
                p2.setVisible(true);
            }
        });
    }

}

Classe que extends JPanel:

package variospanel;

import javax.swing.JButton;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;

public class Painel1 extends JPanel{
    JButton botao = new JButton("Puxa aqui");

    public Painel1(){
        setLayout(new MigLayout());
        add(botao);

    }



}

Segunda classe que extends JPanel:

package variospanel;

import javax.swing.JButton;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;

public class Painel2 extends JPanel {

    JButton botao = new JButton("Clica aqui");
    
    public Painel2(){
        setLayout(new MigLayout());
        add(botao);
        
    }



}

Obrigado pela atenção!!!

2 Respostas

B

http://www.guj.com.br/posts/list/222832.java#1140953

B

Nesse exemplo, eu só pus uma ação no Menu (que é a de fechar a janela), mas você pode adicionar ações semelhantes às que estão nos botões do lado esquerdo. OK?

Criado 29 de outubro de 2010
Ultima resposta 29 de out. de 2010
Respostas 2
Participantes 2