Primeiramente, gostaria de dizer que já pesquisei várias coisas aqui no fórum e em outros lugares da internet. Aparentemente meu problema já foi resolvido em outros tópicos mas as soluções apresentadas nunca davam certo
A minha situação é o seguinte… Eu tenho um JFrame e dentro dele tenho:
um JMenu com alguns items nele
um JPanel
Bem… O meu problema é o seguinte: Dependendo do item que o usuário clicar no Menu, devo carregar um JPanel (q eu já tenha criado) naquele JPanel que está dentro do JFrame…
Na verdade eu já tinha visto esse CardLayout mas eu estava querendo fazer de uma outra forma…
Eu queria algo do tipo: O JPanel q eu adicionei ao meu JFrame passe a apontar para algum outro JPanel q eu tenha criado… Isso não é possível? Eu lembro ter feito isso há muito tempo atrás mas definitivamente não me recordo como eu fiz
fabiofalci
Isso é justamente o que o CardLayout faz, mas ao invés de um ele aponta pra vários. Sendo que
ele mostra um de cada vez, o que tu indicar!
guivirtuoso
Pesquise sobre o CardLayout e como utiliza-lo, acredito que seja a melhor forma p/ vc trabalhar com este recurso visual.
Sugiro também que você tenha Classes que herdam da classe JPanel p/ que a manutenção no seu fonte seja melhor, invez de estanciar vários JPanel´s dentro do seu JForm.
Abracos.
D
DanielSR
guivirtuoso:
Pesquise sobre o CardLayout e como utiliza-lo, acredito que seja a melhor forma p/ vc trabalhar com este recurso visual.
Sugiro também que você tenha Classes que herdam da classe JPanel p/ que a manutenção no seu fonte seja melhor, invez de estanciar vários JPanel´s dentro do seu JForm.
Abracos.
Eu tenho essas classes extendendo JPanel e lá no meu JFrame eu tenho um JPanel adicionado e que eu queria ir alterando conforme o usuário clicasse em determinados botoes… Eu não queria dizer como eu penso q eu devo fazer pq estou com medo de estar totalmente errado, mas aqui vai como eu acho q eu poderia fazer:
jPanel.add(new ClasseQExtendeJPanel());
Eu acredito q precise fazer mais coisa… mas essas coisas q eu nao sei o q fazer… E tb não sei se isso é certo…
fabiofalci
Quem pode dizer que está errado né? :lol:
Mas assim, tenho um exemplinho bem simples do cardlayout, é por ai
É um painel que muda pra outros 3 de acordo com os botões.
D
DanielSR
Olá,
Tentei seguir a sugestão do CardLayout ficou assim:
OBS:
estou fazendo no NetBeans e copiei apenas as partes referentes a essa parte do CardLayout…
as classes Cadastro() e Consulta() extendem JPanel
publicclassMainextendsjavax.swing.JFrame{privateCardLayoutcardLayout=null;privateJPanelpainelCadastro=null;privateJPanelpainelConsulta=null;privateJPaneljPanelPrincipal;publicMain(){initComponents();}privatevoidinitComponents(){jPanelPrincipal=newJPanel(getCardLayout());jPanelPrincipal.add(getPainelCadastro(),"cadastro");jPanelPrincipal.add(getPainelConsulta(),"consulta");}publicCardLayoutgetCardLayout(){if(cardLayout==null){cardLayout=newCardLayout();}returncardLayout;}publicJPanelgetPainelCadastro(){if(painelCadastro==null){painelCadastro=newCadastro();}returnpainelCadastro;}publicJPanelgetPainelConsulta(){if(painelConsulta==null){painelConsulta=newConsulta();}returnpainelConsulta;}//eventos dos items do menuprivatevoidjMenuItemConsultarActionPerformed(java.awt.event.ActionEventevt){getCardLayout().show(jPanelPrincipal,"cadastro");}privatevoidjMenuItemCadastrarActionPerformed(java.awt.event.ActionEventevt){getCardLayout().show(jPanelPrincipal,"consulta");}}
Porém, ao executar o código é lançada a seguinte excessão:
Não sei o que eu posso ter feito errado e gostaria de saber se alguém tem alguma sugestão para o erro…
Agradeço desde já,
DanielSR
fabiofalci
A principio está ok cara.
Mas tem mais código? Talvez alguma linha esteja estragando…
Tu nao esta inicializando de novo o jPanelPrincipal? Como tu está adicionando o jPanelPrincipal no teu JFrame?