/**************/*/*Crieiparagerarumpainelcomosbotoes./*/**************importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.event.KeyEvent;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassNovoPainelBextendsJFrame{privatestaticfinallongserialVersionUID=1;publicJLabellNome;publicJLabellEndere;publicJButtonbNovo;publicJButtonbSalvar;publicJButtonbCancelar;publicJPanelpPanelC;publicNovoPainelB(){super("NovoPainelB");setSize(340,80);pPanelC=newJPanel();pPanelC.setLayout(null);getContentPane().setLayout(newBorderLayout());getContentPane().add(pPanelC,BorderLayout.CENTER);pPanelC.setBackground(newColor(150,20,25));bNovo=newJButton("Novo");bNovo.setMnemonic(KeyEvent.VK_N);bNovo.setBounds(10,20,90,25);bSalvar=newJButton("Salvar");bSalvar.setMnemonic(KeyEvent.VK_S);bSalvar.setBounds(110,20,90,25);bCancelar=newJButton("Cancelar");bCancelar.setMnemonic(KeyEvent.VK_C);bCancelar.setBounds(210,20,90,25);pPanelC.add(bNovo);pPanelC.add(bSalvar);pPanelC.add(bCancelar);}publicstaticvoidmain(String[]arg){NovoPainelBnp=newNovoPainelB();np.setVisible(true);}}---------------------------------------------------------------------------------------------------------------------------------------------/************************/*/*EsteaosercriadodeveriareceberemsuaBASEopainelcriado/*naCasseacima/*/************************importjava.awt.BorderLayout;importjava.awt.Color;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassUsaPainelBextendsJFrame{privatestaticfinallongserialVersionUID=1;publicJLabellNome;publicJLabellEndere;publicNovoPainelBppInovo;publicJPanelpPanelD;publicUsaPainelB(){super("Usa o painel B");setSize(380,80);ppInovo=newNovoPainelB();ppInovo.setLayout(null);pPanelD=newJPanel();pPanelD.setLayout(null);getContentPane().setLayout(newBorderLayout());getContentPane().add(pPanelD,BorderLayout.CENTER);getContentPane().add(ppInovo,BorderLayout.SOUTH);pPanelD.setBackground(newColor(250,220,25));}publicstaticvoidmain(String[]arg){UsaPainelBusan=newUsaPainelB();usan.setVisible(true);}}
Se alguem puder me ajudar eu agradeço…
e Muito obrigado desde ja.
Quando vc for postar codigo, coloque-o entre as tags [ code]
e [ /code], assim ele ficará endentado.\n’
fmeyer
NovoPainelB extends JFrame
nunca vai dar certo … tente extender Jpanel :mrgreen:
malock
Ok troquei mas mesmo assim ele não traz o NovoPainelB para dentro do UsaPainelB fica em branco não aparece o NovoPainelB que foi adicionado
tRuNkSnEt
No seu codigo tem algumas coisas que me parecem estar meio redundantes. Estou sem IDE aqui nesse pc para testar, se você puder mencionar o erro que dando seria mais facil.
Em todo caso, pelo seu codigo, voce esta tentando criar um frame com painel dentro de outro frame. Não sei se ele aceita isso não.
Veja:
ppInovo = new NovoPainelB();
-----> logo o seu ppInovo é um JFrame.
Tente mudar seu codigo usando a dica do amigo acima ou senão algo do tipo;
.add(ppInovo.pPainelC);
Para ficar mais pratico crie uma classe para cada painel e chame os painel no frame que tu está lidando.
public classe painelA extends JPanel
public classe painelB extends JPanel
public classe painelC extends JPanel
public classe painelD extends JPanel
public classe FramePrincipal extends JFrame;
.add panielA, painelB,PainelC,painelD
Falei grego??? UAhUAA eu preciso dormir fuiiiiiiiiiiiiiiiii
G
gui.hermeto
Você errou em algumas coisas, como usar “NovoPainelB extends JFrame” e tentar mudar o layout pra null…
Tente alterar seu código para que fique mais ou menos assim:
importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.event.KeyEvent;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;// ESSA CLASSE DEVE "EXTENDER" JPANELpublicclassNovoPainelBextendsJPanel{privatestaticfinallongserialVersionUID=1;publicJLabellNome;publicJLabellEndere;publicJButtonbNovo;publicJButtonbSalvar;publicJButtonbCancelar;publicJPanelpPanelC;publicNovoPainelB(){// AQUI NÃO EXISTE A CHAMADA DO CONSTRUTOR DA SUPERCLASSE//super("NovoPainelB");setSize(340,80);pPanelC=newJPanel();pPanelC.setLayout(null);// AQUI RETIREI O GETCONTENTPANE()setLayout(newBorderLayout());add(pPanelC,BorderLayout.CENTER);pPanelC.setBackground(newColor(150,20,25));bNovo=newJButton("Novo");bNovo.setMnemonic(KeyEvent.VK_N);bNovo.setBounds(10,20,90,25);bSalvar=newJButton("Salvar");bSalvar.setMnemonic(KeyEvent.VK_S);bSalvar.setBounds(110,20,90,25);bCancelar=newJButton("Cancelar");bCancelar.setMnemonic(KeyEvent.VK_C);bCancelar.setBounds(210,20,90,25);pPanelC.add(bNovo);pPanelC.add(bSalvar);pPanelC.add(bCancelar);}publicstaticvoidmain(String[]arg){NovoPainelBnp=newNovoPainelB();np.setVisible(true);}}
importjava.awt.BorderLayout;importjava.awt.Color;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassUsaPainelBextendsJFrame{privatestaticfinallongserialVersionUID=1;publicJLabellNome;publicJLabellEndere;publicNovoPainelBppInovo;publicJPanelpPanelD;publicUsaPainelB(){super("Usa o painel B");// SE VC AUMENTAR O TAMANHO PODERÁ VER O pPanelDsetSize(380,80);ppInovo=newNovoPainelB();/* SE VOCÊ COLOCOU O LAYOUT DELE COMO BORDERLAYOUT E ADICIONOU O * JPANEL pPanelC, AQUI VOCÊ NÃO DEVE SETAR O LAYOUT PRA NULL *///ppInovo.setLayout(null);pPanelD=newJPanel();pPanelD.setLayout(null);getContentPane().setLayout(newBorderLayout());getContentPane().add(pPanelD,BorderLayout.CENTER);getContentPane().add(ppInovo,BorderLayout.SOUTH);/* COM O BORDERLAYOUT VOCÊ DEVE UTILIZAR ESTE MÉTODO PARA ELE AJUSTAR * O TAMANHO DO PAINEL */ppInovo.setPreferredSize(newjava.awt.Dimension(380,60));pPanelD.setBackground(newColor(250,220,25));}publicstaticvoidmain(String[]arg){UsaPainelBusan=newUsaPainelB();usan.setVisible(true);}}
Assim ele vai funcionar, mas não sei se é bem o que você quer…
Até mais,
GH
malock
Ok deu certo "gui.hermeto " muito obrigado a todos … pela ajuda.
heliwow
Estou com um problema similar… ao inves de adicionar um Panel a um Frame so consigo utilizar um Frame dentro de Frame… o que poderia modificar nesse codigo?
Tentei usar o p como parametro. Do jeito que tinha mostrado consigo executar tudo, porém ficam duas janelas sobrepostas e a ideia é de o frame principal somente chamar um panel de outro .java que executa um whitebox.
Seguindo seus passos so exibe a janela principal mesmo…
E essas linhas que você sugeriu dão erro:
JPanel jp = new JPanel(new BorderLayout);
frame.add(jp);