JFrame abrir JInternalFrame

8 respostas
E

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…

8 Respostas

S

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.

E

Não consegui, você não tem um exemplo, abraço.

romulo00

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! :smiley:

JhowTroMundo

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);
romulo00

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…

JhowTroMundo

Você teria que substituir o frame pelo seu frame principal.

romulo00

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...
JhowTroMundo

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.

Criado 12 de setembro de 2007
Ultima resposta 20 de mai. de 2011
Respostas 8
Participantes 4