App MDI

8 respostas
Douglas.Aqa

Saudacoes a todos

Estou tentando fazer com que funcione uma aplicacao MDI mas ja faz tempo pois vejo muito lero lero mas algum exemplo que funcione verdadeiramente ate agora nada.
sera que e possivel fazer uma janela mae que todas as outras fiquem submetidas a ela coisa simples com alguns label na janela filha.

caso alguem possa me ajudar ficarei muito grato

8 Respostas

S

Não serve JInternalFrame?

Douglas.Aqa

sim seria valida, mas voce teria um exemplo?

debug

cria a classe mdi ...

package br.Smart.interfac;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class MDI2 extends JFrame{
	JDesktopPane desktop; //JDesktopPane é responsável deixar o form MDI
	int quantJanelas = 0;
	
	MDI2(){
		JMenuBar barra = new JMenuBar();
		
		//**************define os itens do menu principal*****************
		JMenu tecnologia  = new JMenu("Tecnologias");
		tecnologia.setMnemonic(KeyEvent.VK_T);
		
		JMenuItem item1 = new JMenuItem("Modelo");
		
		
		item1.addActionListener(
				new ActionListener () {
					public void actionPerformed(ActionEvent e){
						//JInternalFrame Jcdma = new JInternalFrame("CDMA",true,true,true,true);
						
						CDMA internalFrame = new CDMA();  
					
											  
						// Configura o frame interno do mesmo tamanho do DesktopPane.. e reposiciona ele..   
						internalFrame.setSize(desktop.getSize());   
						internalFrame.setLocation(0,0);   
					
						  
						desktop.add(internalFrame);   
						internalFrame.show();  
						}
				});
		tecnologia.add(item1);
		barra.add(tecnologia); //add na barra
		setJMenuBar(barra); // conf. a barra aa ser add no menu barra
		
		desktop = new JDesktopPane();//crio obj
		setContentPane(desktop);// configuro como mdi
		setExtendedState(MAXIMIZED_BOTH); // para abrir maximizada
		setVisible(true);
	}
	

	public static void main(String[] args){
		MDI2 app = new MDI2();
		app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
	}
}

agora esse é o fonte da classe filho

import javax.swing.*;


class CDMA extends JInternalFrame{ 

	public static int numVersao = 1; 

	public CDMA (){ 
//		setClosable(false);
//		setIconifiable(false);
//		toFront();
	super("texto #"+ (numVersao++),//título com o  da versão 
	false, //opção de redimensionar 
	true, //opção de fechar 
	true, //opção de maximizar 
	true);//opção de minimizar 
	setVisible(true);
	
	
	
	}
}
so rodar que funciona ;)
Douglas.Aqa

Até ai maravilha, realmente funcionou, mas eu peço que tenha paciencia pois alem de meio lerdo eu estou aprendendo a trabalhar com java, e gostaria de saber como colocar os componentes nesta internalframe e para que cada chamada seja diferente (tipo assim Cadastro de Clientes, Fornecedores, cidades etc).

debug

hehe eu tb estou cmecando jaz um mes que comece :)

seguinte... para seu form filho carregar com componentes vc deve adiciona-los no construtor por exemplo:

import javax.swing.*;   
    
class CDMA extends JInternalFrame{   
  
    public static int numVersao = 1;   
  
    public CDMA (){   

    super("texto #"+ (numVersao++),//título com o nº da versão   
    false, //opção de redimensionar   
    true, //opção de fechar   
    true, //opção de maximizar   
    true);//opção de minimizar  

//coloque os componentes aqui
JButton b1  = new JButton("Cick aqui!"); //exemplo
    setVisible(true);   
       
       
       
    }   
}

para abrir uma tela para cada item vc deve criar outro JInternalFrame e nessa classe vc ccolca os componente que deseja.

Feito isso adicine o metode de evento para chamar sua nova classe em outro item do mdi

item2.addActionListener(   
                new ActionListener () {   
                    public void actionPerformed(ActionEvent e){   
                        //JInternalFrame Jcdma = new JInternalFrame("CDMA2",true,true,true,true);   
                           
                        CDMA2 internalFrame = new CDMA2();

pesquise tb algo de configuracao de layout vc vai precisar.

é para organizar os cmponente na sua tela.

espero ter ajudado!

ate+

perfectron

Olá pessoal!

Bom, este é meu primeiro post. Programo em VB, estou muito entusiasmado com o Java, comecei a estudá-lo á poucas semanas, e já fiquei curioso sobre forms MDI.
Este tópico me pareceu um balde de água fria. No VB simplesmente se adiciona um form, adiciona-se os componentes, de forma visual, define em suas propriedades como sendo um form MDIChild, simples assim.

Me corrijam se eu estiver errado, pois pelo que entendi a única forma de usar um MDI no java é acrescentando os componentes via código, e daí o layout vai para o espaço? Isto é, é definido “automaticamente”, pelo gerenciador de layout? Existe alguma forma em que eu possa montar o meu form, como num JFrame, escolhendo a posição dos componentes “visualmente”, e depois chamá-lo como um form mdi filho ?

Isso até me desanimou agora :frowning:

W

Escolha uma IDE. no meu caso para SWT prefiro Netbeans.

Att.
Wallfox

perfectron

Wallfox:
Escolha uma IDE. no meu caso para SWT prefiro Netbeans.

Att.
Wallfox

Sim, tenho utilizado o Netbeans, mas pelo que entendi no caso de forms MDI não resolve nada, estou certo?

Criado 5 de maio de 2008
Ultima resposta 12 de fev. de 2009
Respostas 8
Participantes 5