Alternar JPanels a partir de um JMenuItem com Swing?
5 respostas
Fabricio_Cozer_Marti
pessoal,
tenho um formulário com um menu e outros componentes em classes diferentes, preciso que a partir de um evento no menuitem, alterar o jPanel do formulario.
ALguém tem algum exemplo ?
Os componentes do formulário são:
JMenu com seus JMenuItem
um JDesktop, e diversos JPanel associados com o JDesktop, que deverão ser mostrados ou não a depender do clique no menu …
Você poderia tentar usar um JPanel que usa java.awt.CardLayout e associar os JPanels a esse JPanel A CardLayout object is a layout manager for a container. It treats each component in the container as a card. Only one card is visible at a time, and the container acts as a stack of cards. The first component added to a CardLayout object is the visible component when the container is first displayed.
(se bem que sou mais a favor de usar um JTabbedPane).
Luiz_Gustavo
O que você vai ter é apenas um JInternalFrame que vai alternar os JPanels?
Luiz_Gustavo
Aí está:
importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassPrincipalextendsJFrame{privateJDesktopPanedesktopPane;privateJMenuItemmenuItem1,menuItem2;privateJMenuBarmenuBar;privateJMenumenu;privateControladorcontrolador;publicPrincipal(){super("Exemplo de JDesktopPane");desktopPane=newJDesktopPane();controlador=newControlador(desktopPane);intinset=50;DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();setBounds(inset,inset,screenSize.width-inset*2,screenSize.height-inset*2);menuItem1=newJMenuItem("Painel Amarelo");menuItem1.setActionCommand("menuItemAmarelo");menuItem1.addActionListener(controlador);menuItem2=newJMenuItem("Painel Verde");menuItem2.setActionCommand("menuItemVerde");menuItem2.addActionListener(controlador);menuBar=newJMenuBar();menu=newJMenu("Opções");menu.add(menuItem1);menu.add(menuItem2);setContentPane(desktopPane);menuBar.add(menu);setJMenuBar(menuBar);setVisible(true);setResizable(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicstaticvoidmain(Stringargs[]){Principalp=newPrincipal();}}
Valeu cara, mas me diz uma coisa … como eu faço pra tirar a barra superior do JInternalFrame o, queria que ele ocupasse toda a área do JDesktop, sem aparecer a barra de maximizar e tal, isso é possível ?
valeu!
Luiz_Gustavo
Então… até onde eu sei só é possível criar um JInternalFrame sem os botões de maximizar, fechar, etc… e sem título, usando um contrutor sem parâmetros.
Criando esse tipo de JInternalFrame, e deixando ele maximizado, a única coisa que o usuário poderia fazer seria movimentá-lo.
Mas se você sempre vai trabalhar desta maneira, com o JPanel maximizado, e sem a possibilidade de o usuário fechá-lo, poderia deixar de lado o JInternalFrame, e usar um JPanel no Container do JFrame mesmo, pegando toda a área disponível.