Sei que é uma dúvida muito comum, mas em todos os lugares que vi não consegui achar uma solução.
Tenho a tela principal que é um JFrame e quando clico em um botão quero abrir um JPanel, este sendo uma outra classe.
O meu código está assim e não funciona.
teste t = new Teste(); // Essa é a classe JPanel
PrincipalGUI p = new PrincipalGUI();
p.add(t);
p.repaint();
p.revalidate();
EHS.
Acredito eu que um jpanel só pode ser visualizado dentro de um jframe.
Nunca ouvi falar em abrir um jpanel assim.
E
EHS
Mas é isso que eu quero, tenho um JFrame principal e dentro dele um Jpanel, quando executo o programa ele abre esse JFrame
com o Jpanel como tela principal, daí tenho um botão, então quando clico nesse botão quero abrir um JPanle
e esse Jpanel tem um formulário, ele seria como uma outra tela do sistema.
Não sei se entendi direito, mas para usar o cardLayout eu teria que ter vários Jpanel dentro do JFrame principal e não é isso que eu quero.
Quero que cada Jpanel seja uma tela do sistema, qdo inicio abre a principal com JFrame e um Janel, nele tem uma barra de botões que funciona
como um menu, então em cada botão desses que eu clicar quero que chame uma nova classe JPanel, não sei se fui claro.
F
felipeaps
Não sei se entendi direito, mas para usar o cardLayout eu teria que ter vários Jpanel dentro do JFrame principal e não é isso que eu quero.
Quero que cada Jpanel seja uma tela do sistema, qdo inicio abre a principal com JFrame e um Janel, nele tem uma barra de botões que funciona
como um menu, então em cada botão desses que eu clicar quero que chame uma nova classe JPanel, não sei se fui claro.
O cardLayout possibilita exatamente isso. O cardLayout “guarda” seus paineis. Quando vc clica no botão referente ao painel, ele “mostra” aquele painel.
D
Dani_Gomes
Quando eu quero chamar um jframe, que contém um jpanel com o formulário que eu desenhei.
eu chamo ele assim:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.GroupLayout cannot be cast to java.awt.CardLayout
E
EHS
Dani Gomes:
Quando eu quero chamar um jframe, que contém um jpanel com o formulário que eu desenhei.
eu chamo ele assim:
new TUsuarios().setVisible(true);
Mas o TUsuarios é uma classe que extende jframe;
Mas desse jeito abre uma nova janela e eu não quero abrir uma nova janela.
F
felipeaps
Olha um exemplo bem tosco de cardLayout. Vê se te ajuda.
Main:
publicclassMain{/** * @param args the command line arguments */publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){newTelaPrincipal();}});}}
publicclassJPanel1extendsJPanel{publicJPanel1(){init();}privatevoidinit(){setLayout(newBorderLayout());add(newJLabel("Oi, sou o Painel1!!"),BorderLayout.EAST);setBackground(Color.BLUE);}}
Painel2:
publicclassJPanel2extendsJPanel{publicJPanel2(){init();}privatevoidinit(){setLayout(newBorderLayout());add(newJLabel("Oi, sou o Painel2!!"),BorderLayout.EAST);setBackground(Color.RED);}}
E
EHS
Eu acho que não interfere em nada, mas estou usando o netbeans para desenvolver então os componentes eu arrasto para a tela.
Pelo exemplo que vc me passou eu fiz isso
PrincipalGUI
public PrincipalGUI() {
initComponents();
setLayout(new BorderLayout());
add(getCardLayout(), BorderLayout.CENTER);
}