Usando o MDI

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 .

me ajudem !

uaslei Java

Se eu não me engano você consegue fazer com a classe JInternalFrame.

Vou dar um procurada aqui nos meus codigos , se eu encontrar alguma coisa te mando um exemplo.

Que tal postar as dúvidas de interface gráfica, no fórum de interface gráfica?

Leia com atenção a descrição dos fóruns antes de postar. Não dói nada e sua dúvida será respondida mais rapidamente.

Quanto ao seu problema… siga o conselho do Rafael e procure por JInternalFrame e JDesktopPane:
http://download.oracle.com/javase/tutorial/uiswing/components/internalframe.html

Ou largue mão desse MDI de uma vez, como fez o Windows há uns 5 anos.

Não achei um exemplo nos meus codigos , mas fiz um agora “saindo do forno” , segue abaixo:


import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JInternalFrame;
import javax.swing.JButton;
import java.awt.Dimension;

public class TesteFrameInterno {

	public TesteFrameInterno() {
	
		JFrame gui = new JFrame("Janela Principal"); // Janela principal
		JPanel panel = new JPanel(); // Painel da janela principal
		JPanel ipanel = new JPanel(); // Painel da janela interna
		JButton botao = new JButton("OK"); // Botao que sera colocada na janela interna
		
		gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// Define o tamanho do botao
		botao.setPreferredSize(new Dimension(100,50));
		
		// Adiciona botao no JPanel interno
		ipanel.add(botao);
		
		// ***** AQUI VOCE CRIA O FRAME INTERNO *****
		JInternalFrame igui = new JInternalFrame("Janela Interna");
		
		// Define o tamanho e posicao da janela principal
		gui.setBounds(0,0,800,600);
		
		// Define tamanho do frame interno
		igui.setPreferredSize(new Dimension(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 JPanel 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);
		
		
	}
	
	public static void main(String args[] ) {
		
		TesteFrameInterno testeframe = new TesteFrameInterno();
		
	}
	
}

Espero que isso te ajude.

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:

import javax.swing.JFrame;  
import javax.swing.JPanel;  
import javax.swing.JInternalFrame;  
import javax.swing.JButton;  
import java.awt.Dimension;  
  
public class TesteFrameInterno {  
  
    public TesteFrameInterno() {  
      
        JFrame gui = new JFrame("Janela Principal"); // Janela principal  
        JDesktopPane panel = new JDesktopPane(); // Painel da janela principal  
        JPanel ipanel = new JPanel(); // Painel da janela interna  
        JButton botao = new JButton("OK"); // Botao que sera colocada na janela interna  
          
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
          
        // Define o tamanho do botao  
        botao.setPreferredSize(new Dimension(100,50));  
          
        // Adiciona botao no JPanel interno  
        ipanel.add(botao);  
          
        // ***** AQUI VOCE CRIA O FRAME INTERNO *****  
        JInternalFrame igui = new JInternalFrame("Janela Interna");  
          
        // Define o tamanho e posicao da janela principal  
        gui.setBounds(0,0,800,600);  
          
        // Define tamanho do frame interno  
        igui.setPreferredSize(new Dimension(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);  
          
          
    }  
      
    public static void main(String args[] ) {  
          
        TesteFrameInterno testeframe = new TesteFrameInterno();  
          
    }  
      
}

Um abraço

discorpio ,

Obrigado pela correção , aprendi mais essa. :smiley: