Problemas com jMenuItem e jPanel

7 respostas
ivosantiago

Gostaria de segmentar bastante o meu projeto e escolhi seguir o padrão MVC. Por ter feito assim eu estou passando um aperto com o jMenuItem e o jPanel.

Tenho um arquivo (main) que contem um jFrame com os menus e os itens do menu. Gostaria que nessa mesma janela fosse aberto um jPanel que foi definido em outro arquivo quando um item do menu fosse selecionado. Por exemplo:

Classe principal -> Menu Cadastro -> Item Usuario -> No mesmo jFrame gostaria de carregar o jPanel que está no arquivo CadastraUsuario.

Pra todo lado todo mundo fala a mesma coisa:
dentro da action do item faça

Já adianto que isso tentei e não resolve o meu problema.

Alguma sugestão??

Grato

7 Respostas

ViniGodoy

Antes de eu te falar a mesma coisa, por que isso não resolve seu problema?

ViniGodoy

Ah sim, pq vc quer um JPanel. Nesse caso, você deve usar um CardLayout no seu form principal:
http://java.sun.com/docs/books/tutorial/uiswing/layout/card.html

Ou você terá que fazer:

//Remove o painel que estiver no centro
formPrincipal.remove(painelAtual);

//Cria o novo painel e substitui o do centro
painelAtual = new CadastraUsuario();
formPrincipal.add(painelAtual);

//Manda o form repintar
formPrincipal.revalidate();
samirrolemberg

ja olhou se no codigo que gera a tela há algum metodo setando a visibilidade como falso?

eu prefiro controlar a visibilidade dentro da propria tela.

ivosantiago
ViniGodoy:
Ah sim, pq vc quer um JPanel. Nesse caso, você deve usar um CardLayout no seu form principal: http://java.sun.com/docs/books/tutorial/uiswing/layout/card.html

Ou você terá que fazer:

//Remove o painel que estiver no centro
formPrincipal.remove(painelAtual);

//Cria o novo painel e substitui o do centro
painelAtual = new CadastraUsuario();
formPrincipal.add(painelAtual);

//Manda o form repintar
formPrincipal.revalidate();

Acho que entendi e talvez possa funcionar... Vou tentar por aqui. Mas agora a dúvida cresceu:

Eu imaginava que "a maneira" de fazer era pelo jPanel mesmo... Tem alguma sugestão pra fazer de outro jeito? O que eu quero fazer está explicado nas imagens abaixo:

Clicou no menu pra abrir uma consulta (ou outra coisa qualquer)
[img]http://www.ivosantiago.com/1.JPG[/img]

Abriu no mesmo jFrame
[img]http://www.ivosantiago.com/2.JPG[/img]

Alguma sugestão??

Valeu pela ajuda

ivosantiago

up

ViniGodoy

Ué, do jeito que eu postei não funciona?

ivosantiago

(in)Felizmente o problema foi resolvido!

A indefinição de felicidade é porque não foi do jeito que eu gostaria.

Eu pretendia ter cada view interna (dessas que abrem dentro da mesma janela) separa em classes diferentes, assim teria um bom MVC implementado mas não consegui fazer isso com o netbeans. O jeito foi fazer o cardlayout e colocar todas as views na mesma classe.
:cry:

Obrigado

Criado 31 de maio de 2010
Ultima resposta 1 de jul. de 2010
Respostas 7
Participantes 3