Bom galera, o meu problema é o seguinte, eu tenho um formulário principal que é um JFrame, e tenho outros formulários que não são principais que são JInternalFrame:
dai vem o meu problema: Como eu faço de uma forma bem simples para abrir um JInternalFrame dentro de um JFrame. Valeu pessoal, abraços…
JFrame abrir JInternalFrame
8 Respostas
Cara, nunca tentei abrir um JInternalFrame em um JFrame mas ja abri em uma JDesktopPane.
Para abrir no JDesktopPane, vc deve adicionar o JInternalFrame no JDesktopPane:
JDesktopPane desktop = new JDesktopPane,();
JInternalFrame internalFrame = new JInternalFrame();
desktop.add(internalFrame);
Depos vc coloca o InternalFrame visivel:
internalFrame.setVisible(true);
Com o JFrame deve ser bem aprecido.
Espero ter ajudado.
Valeu.
Não consegui, você não tem um exemplo, abraço.
Boa tarde galera…
A parte do JInternalFrame ser acessado de um DesktopPane ta OK…
criei um JFrame com o JDesktop dentro.
Eu tenho um Jpanel que contem um formulário para ser preenchido.
Estou tentando colocar o Panel dentro o Internal Frame e este dentro do desktop panel… segue o código…
//aperte o botão e o jInternalFrame aparece com o formulário dentro
private void abreConsumidores(java.awt.event.ActionEvent evt) {
JInternalFrame jif = new JInternalFrame();
//Consumidores c = new Consumidores(); // Consumidores é a classe com meu formulário
jif.add(new Consumidores());
Desktop.add("consumidores", jif); // Desktop é o nome que dei ao desktoppanel
jif.setVisible(true);
}
Eu estou alterando um projeto que fiz utilizando jInternalFrame mas percebi, agora que está concluído, que o código ficou muito porco… tem coisa demais em um só arquivo e posso deixar isso mais limpo e fácil de entender se fizer em camadas (coisa que eu não tinha visto nada ainda) [muito aspira ainda…]
agradeço a ajuda! 
Nao sei se vai te ajudar, mas eu faço assim:
Frame frame = new JFrame();
ViewFiltrarGuiasGSB vfg = new ViewFiltrarGuiasGSB(); //extende internal frame
vfg.setVisible(true);
vfg.setResizable(false);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(vfg);
frame.setResizable(true);
frame.setVisible(true);
Deixa eu ver se entendi… nesse código… vc coloca o InternalFrame dentro de um Frame…
Desse jeito da pra utilizar com o desktoppane, ou vai acabar abrindo um outro frame mesmo??
Vou tentar criar um frame e adicionar o internal nele… logo mais posto um resultado…
To pensando seriamente em trocar desktop + internal frame por varios frames soltos, até pq são poucas janelas…
mas gostaria de saber como faz pra fazer em projetos futuros…
Você teria que substituir o frame pelo seu frame principal.
Valeu a ajuda aí... eu tentei desse modo que você falou... mas não ficou muito legal..
mas com isso eu entendi o porque meu código estava dando errado...
quando coloquei o código como vc sugeriu para rodar... ele abriu uma nova janela... porém ela estava toda encolhida... ou seja, o size dela estava (0,0)
visto isso... utilizei um setSize(altura,largura) [ou seja lá qual é a ordem pq não to lembrando] com meus valores da janela e coloquei um setResizable(false) pq não faz sentido esticar um form... e funcionou certinho...
//aperte o botão e o jInternalFrame aparece com o formulário dentro
private void abreConsumidores(java.awt.event.ActionEvent evt) {
JInternalFrame jif = new JInternalFrame();
//Consumidores c = new Consumidores(); // Consumidores é a classe com meu formulário
jif.add(c);
jif.setSize(valor1,valor2); // Valor 1 e valor 2 eu inseri o tamanho do meu form...
jif.setResizable(false); // não vejo necessidade em modificar o tamanho de um form...
Desktop.add("Consumidores", jif); // Desktop é o nome que dei ao desktoppanel
jif.setVisible(true);
}
//deve funcionar lindamente... o meu funcionou...
Eu defino o tamanho do meu internal frame no construtor dele. (Talvez tenha sido por isso que o teu deu errado no principio)
Mas se tá funcionando, tá beleza.
Quanto ao setResizable, tanto faz. O código que te mostrei como exempo é um método main dentro do proprio internal frame pra que eu nao precise inicializar a aplicação (que demora um bocado) sempre que quiser testar como tá ficando. Executo somente o internal frame, que é instântaneo.