Como inserir uma JPanel de outra classe na principal?

3 respostas
Andre.flu

Criei uma classe para controlar um painel, e quero coloca-lo na tela principal (aquela que tem o menu) como faço isso. Ai vai parte do codigo de como estou fazendo...

public class Principal extends JFrame implements ActionListener{

   TelaCheque pCheque;
   TelaContas pContas;
   JPanel painelTopo, painelGerente;

public Principal() {
.
painelTopo = new JPanel();
painelGerente = new JPanel();
pCheque = new TelaCheque();
pContas = new TelaContas();
painelGerente.setLayout(new CardLayout());
painelTopo.setLayout(new FlowLayout());
.
painelGerente.add(pCheque,"cheque");
painelGerente.add(pContas,"contas");

getContentPane().add("North",painelTopo);
getContentPane().add("Center",painelGerente);

}
public void actionPerformed(ActionEvent e) {
CardLayout painel = (CardLayout) painelGerente.getLayout();
    if(e.getSource() == miCadCheque){
       painel.show(painelGerente,"cheque");
     	}

     if(e.getSource() == miCadContas){
       painel.show(painelGerente,"contas");
     }

   }
Na outra classe... eu tenho:
public class TelaCheque extends JPanel implements ActionListener{

  JPanel painelCheque;

public TelaCheque(){

//componentes da tela.

}

Não inseri nada constrido na classe TelaCheque?

:?: :cry:

3 Respostas

brlima
public class Principal extends JFrame implements ActionListener{ 

   TelaCheque painelCheque; 
   . 
   painelCheque = new TelaCheque(); 
   . 
   painelGerente.setLayout(new CardLayout()); 
   . 
   // Errado
   // painelGerente.add(painelCheque,"cheque"); 
   // Certo
   getContentPane().add(painelCheque);
public class TelaCheque extends JFrame implements ActionListener{ 

   JPanel painelCheque; 

   public TelaCheque(){ 

      //componentes da tela. 

   }

Vc tem que adicionar o painel no ContentPane do seu JFrame.

Andre.flu

A solução acima ainda não funcionou… eu completei o codigo inicial acima . Minha intenção é quando clicar em um item do menu mude a tela no centro da contentePane. Testei a solução acima colocando apenas a tela cheque no ContentePane mas continua não funcionando.

brlima

Mas pera ae… Se vc tem um menu, o meu fica no ContentPane do JPanel principal: vc nao pode remover; Vc deve ter um JPanel abaixo do menu, e quando precisar, substituir o Jpanel. Ou entaoa usar o CardLayout e quando precisar, troca a ordem.

Para saber mais sobre o CardLayout, dá uma olhada na API, ou no site da sun.

Abraços,

Criado 17 de fevereiro de 2004
Ultima resposta 18 de fev. de 2004
Respostas 3
Participantes 2