Ola galera gostaria de uma ajuda de vcs, Como faço para utilizar o MDI na minha aplicação onde tenho um frame podedo chamar de pai e ter varios filhas , nela msm chama
as outras frame, por que na minha aplicação aparece 2 janelas ou ate mais .
Ou largue mão desse MDI de uma vez, como fez o Windows há uns 5 anos.
Rafael_Costa_Teixeir
Não achei um exemplo nos meus codigos , mas fiz um agora “saindo do forno” , segue abaixo:
importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JInternalFrame;importjavax.swing.JButton;importjava.awt.Dimension;publicclassTesteFrameInterno{publicTesteFrameInterno(){JFramegui=newJFrame("Janela Principal");// Janela principalJPanelpanel=newJPanel();// Painel da janela principalJPanelipanel=newJPanel();// Painel da janela internaJButtonbotao=newJButton("OK");// Botao que sera colocada na janela internagui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// Define o tamanho do botaobotao.setPreferredSize(newDimension(100,50));// Adiciona botao no JPanel internoipanel.add(botao);// ***** AQUI VOCE CRIA O FRAME INTERNO *****JInternalFrameigui=newJInternalFrame("Janela Interna");// Define o tamanho e posicao da janela principalgui.setBounds(0,0,800,600);// Define tamanho do frame internoigui.setPreferredSize(newDimension(300,200));// O frame interno pode ser maximizadoigui.setMaximizable(true);// O frame interno pode ser redimensionado // obs: O frame interno volta ao tamanho original quando solta o click do mouse , // TALVEZ tenha que tratar evento do frame interno.igui.setResizable(true);// Frame interno pode ser fechado no Xigui.setClosable(true);// Adicional JPanel no frame internoigui.add(ipanel);// Adiciona frame interno no JPanel do Frame principalpanel.add(igui);// Adiciona JPanel no Frame principalgui.add(panel);// Exibe o frame internoigui.setVisible(true);// Exibe o frame principalgui.setVisible(true);}publicstaticvoidmain(Stringargs[]){TesteFrameInternotesteframe=newTesteFrameInterno();}}
Espero que isso te ajude.
discorpio
Bom dia a todos.
Rafael, permita-me fazer uma correção no seu código.
JInternalFrames funcionam melhor dentro de um Panel principal chamado JDesktopPane, onde este contém mais recursos (métodos) que controlam o array de JInternalFrames, dentre eles está o metodo "setSelectedFrame(nome_da_instancia_do_JInternalFrame);
Então seu código ficaria assim:
importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JInternalFrame;importjavax.swing.JButton;importjava.awt.Dimension;publicclassTesteFrameInterno{publicTesteFrameInterno(){JFramegui=newJFrame("Janela Principal");// Janela principal JDesktopPanepanel=newJDesktopPane();// Painel da janela principal JPanelipanel=newJPanel();// Painel da janela interna JButtonbotao=newJButton("OK");// Botao que sera colocada na janela interna gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// Define o tamanho do botao botao.setPreferredSize(newDimension(100,50));// Adiciona botao no JPanel interno ipanel.add(botao);// ***** AQUI VOCE CRIA O FRAME INTERNO ***** JInternalFrameigui=newJInternalFrame("Janela Interna");// Define o tamanho e posicao da janela principal gui.setBounds(0,0,800,600);// Define tamanho do frame interno igui.setPreferredSize(newDimension(300,200));// O frame interno pode ser maximizado igui.setMaximizable(true);// O frame interno pode ser redimensionado // obs: O frame interno volta ao tamanho original quando solta o click do mouse , // TALVEZ tenha que tratar evento do frame interno. igui.setResizable(true);// Frame interno pode ser fechado no X igui.setClosable(true);// Adicional JPanel no frame interno igui.add(ipanel);// Adiciona frame interno no JDesktopPane do Frame principal panel.add(igui);// Adiciona JPanel no Frame principal gui.add(panel);// Exibe o frame interno igui.setVisible(true);// Exibe o frame principal gui.setVisible(true);}publicstaticvoidmain(Stringargs[]){TesteFrameInternotesteframe=newTesteFrameInterno();}}