Estou desenvolvendo a interface gráfrica de um aplicativo pelo NetBeans. Eu dividi a interface em duas classes: GuiMain e GuiForm.
Na classe GuiMain eu criei um botão e deixei um espaço reservado para inserir o formulário. Queria que, ao clicar no botão, o formulário que eu criei na classe GuiForm fosse embutido neste espaço que deixei reservado na classe principal.
Já tentei criar a instância e adicionar desta forma (ao clicar no botão da classe principal):
GuiForm form = new GuiForm();
jPanel2.add(form);
Porém nada acontece. Eu fiz um teste usando o comando “jPanel2.setVisible(false)” e funcionou, o quadro que estava reservado sumiu… Então o problema está ao tentar colocar o formulário neste espaço.
Alguém poderia me dar uma dica de como resolver esse problema?
Desde já, agradeço!
Na verdade eu queria inserir o p´roprio formulário… Deixa eu explicar melhor:
A interface tem 3 botões, e um espaço reservado para exibir o formulário a ser preenchido…
Ao clicar no botão 1, ele traz o formulário que está pronto em uma outra classe…
Ao clicar no botão 2, ele traz um outro formulário, diferente do primeiro…
Ao clicar no botão 3, ele traz um outro formulário, diferente dos dois primeiros…
Todos esses formulários seriam exibidos no mesmo espaço, ou seja, somente um formulário seria exibido por vez… Caso um formulário já esteja carregado, e eu clique em outro botão, gostaria que o formulário aberto “sumisse” e aparecesse o outro…
Deu pra entender mais ou menos? É como se fosse um TabPanel, mas através de botôes…
Você poderia criar três classes que extenda a classe JPanel, aí você em cada classe poderia criar tipos diferentes
de formulários. Para chamá-los na classe principal você teria que atualizar os componentes contidos na interface das classes.
Entendeu?
Eu criei o formulário separado já, extendendo a JFrame…
O que eu não estou conseguindo de jeito nenhum é atualizar a classe principal ao clicar no botão, simplesmente não acontece nada.
O espaço na classe principal já está reservado com um JPanel, mas quando eu instancio a classe que contem o formulário e tento adicionar esse formulário no JPanel, nada acontece. Estranho, porque eu fiz um outro teste, e através do botão eu consigo mudar a borda e cor de fundo desse JPanel normalmente, então não entendi porque quando peço pra adicionar o formulário, ele não adiciona… Até coloquei o setVisible(true) depois de instanciar…
Exemplo
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
javax.swing.JButton button32 = new javax.swing.JButton("Texto do botão");
jPanel2.add(button32, new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 90, -1, -1));
jPanel2.setBackground(Color.red);
}
No exemplo acima, assim que eu clico no botão, ele muda o fundo do jPanel, porém o botão não é adicionado. Sabe me dizer o que está errado?
Tenta fazer o seguinte…
Reserva um espaço do seu formulário principal, e coloca um JPanel, ou JInternalFrame, algo do tipo lá…
Quando for carregar o novo frame, você faz algo do tipo:
// dentro do evento do botão de carregar...
MeuFrame meuFrame = new MeuFrame();
this.meuPanelDoFrame.add( meuFrame );
this.pack();
Tenta algo parecido, pra ver se consegue!
Abraços!
Tenta fazer o seguinte…
Reserva um espaço do seu formulário principal, e coloca um JPanel, ou JInternalFrame, algo do tipo lá…
Quando for carregar o novo frame, você faz algo do tipo:
// dentro do evento do botão de carregar...
MeuFrame meuFrame = new MeuFrame();
this.meuPanelDoFrame.add( meuFrame );
this.pack();
Tenta algo parecido, pra ver se consegue!
Abraços![/quote]
Valeu mesmo, cara! Funcionou agora!
Tava dando problema porque eu tinha definido o layout do jPanel da classe principal como AbsolutLayout. Depois que mudei para BorderLayout funcionou direitinho!
Eu tambem tive a mesma idéia e o mesmo problema, consegui resolver com as dicas acima, porem, no meu exemplo, eu inicio a aplicação (JFrame_Principal) maximizada, e quando clico no botão para adicionar o JPanel externo para dentro do JPanel desse JFrame_Principal, o mesmo é redirecionado de tamanho, saindo do tamanho maximizado para o tamanho informado no pack em Propriedades -> Código -> Política de tamanhado do Form (NetBeans).
Como fazer para que esse redirecionamento não ocorra…permanecendo maximizado, apaenas adicionando o JPanel ?