MDI Swing

Gostaria de saber como criar aplicações MDI em Java. Estou começando em e Java e uso a API Swing para criar minhas aplicações. Mas uma coisa ouso falar em AWT, SWING e SWT, qual dessas APIs é a melhor ou a mais utilizada?

Dê uma olhada em javax.swing.JInternalFrame.

AWT está morta e enterrada, Swing eh bom e SWT é do cacete :smiley:

Procurando aqui no fórum vc consegue descrições bem melhores do que essa minha sonolenta resposta :wink:

Eu tentei usá-la, mas, não consegui. Ao executar o programa no JBuilder não apareceu nada.

Um trecho do meu código para vc dar uma olhada

import java.awt.;
import java.awt.event.
;
import javax.swing.*;

public class Teste extends JIternalFrame
{
Teste()
{ … }
public static void main( String args[] )
{ JInternalFrame a=new Teste();
a.show();

}

}

Poderia me dar um exemplo para eu entender melhor ?

Desde já muito obrigado

Segue um exemplo básico.

[code]import java.awt.;
import java.awt.event.
;
import javax.swing.;
import java.util.
;
import java.text.*;

public class MenuFrame extends JFrame implements ActionListener, MouseListener, MouseMotionListener {
JMenu menu;
JMenuItem exemp = new JMenuItem("JInternalFrame");
JPopupMenu popup = new JPopupMenu();
String[] nomePopup = {"JInternalFrame","Sair"};
JMenuItem[] menuPopup = new JMenuItem[2];
Color color = new Color(200,200,200);//Color(29,140,194);
JButton botaoSair = new JButton("A");
static JButton botaoBackup = new JButton("B");
static JButton botaoNovo = new JButton("C");
Container c;
static JMenuBar menuBar;
JDesktopPane desktop = new JDesktopPane();
static final Integer DOCLAYER = new Integer(5);
static final Integer TOOLLAYER = new Integer(6);
static final Integer HELPLAYER = new Integer(7);

public MenuFrame() {
  super("JInternalFrame");
  final int inset                                                 = 60;
  Dimension screenSize                                            = Toolkit.getDefaultToolkit().getScreenSize();
	 setBounds ( inset, inset, screenSize.width - inset*2, screenSize.height - inset*2 );
	    buildContent();
	    buildMenus();
	    this.addWindowListener(new WindowAdapter() {
       public void windowClosing(WindowEvent e) {
			      quit();
		     }
  });
	    System.out.println("Iniciando Menu Principal");
	    show();
}

protected void buildMenus() {
  menuBar                                                         = new JMenuBar();
    	menuBar.setOpaque(true);
		menu                                                            = buildFileMenu();
		menuBar.add(menu);
		setJMenuBar(menuBar);
		builPopup();
}

 public void builPopup() {
	    for(int i=0; i<2; i++) {
		     menuPopup[i]                                                  = new JMenuItem(nomePopup[i]);
		     if(i == 1)
			      popup.addSeparator();
		     popup.add(menuPopup[i]);
		     menuPopup[i].addActionListener(this);
	    }
   }    


protected JMenu buildFileMenu() {
		menu = new JMenu("Exemplo");
    	menu.addActionListener(this);
	    menu.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
   		exemp.addActionListener(new ActionListener() {
    	  public void actionPerformed(ActionEvent e) {
				     openWindow();
		    	}
  });
		menu.add(exemp);
		return menu;
   }

protected void buildContent() {
  desktop.addMouseListener(this);
  desktop.addMouseMotionListener(this);
  getContentPane().add(desktop);
  desktop.setBackground(color);
}

public void quit() {
	    int result                                                      = JOptionPane.showConfirmDialog(null,"Deseja realmente Sair?", "Saindo", JOptionPane.WARNING_MESSAGE);
	    if (result == JOptionPane.YES_OPTION) {
	      System.out.println("Fechando Menu Principal");		
		  System.exit(0);
	    }
}

public void openWindow() {
		JInternalFrame internal1                                        = new sobre();
	    desktop.add(internal1, HELPLAYER);
	    try { 
    	  internal1.setVisible(true);
    	  internal1.setSelected(true); 
	    }	catch (java.beans.PropertyVetoException e2) {}
  }

public void actionPerformed(ActionEvent e) {
	 if(e.getSource() == menuPopup[0])
		  openWindow();
	 if(e.getSource() == menuPopup[1])
		  quit();
 	if(e.getSource() == botaoSair)
  		quit();
}	

   public void mouseClicked(MouseEvent e) {
   }

private void checkForTriggerEvent(MouseEvent e) {
		if(e.isPopupTrigger())
		     popup.show(e.getComponent(), e.getX(), e.getY());
}

public void mouseReleased(MouseEvent e) {
	    if(e.getSource() == desktop) {
		     checkForTriggerEvent(e);	
	    }
}

   public void mouseEntered(MouseEvent e) {
   }
	
   public void mouseExited(MouseEvent e) {
}
   public void mousePressed(MouseEvent e) {
    	if(e.getSource() == desktop) {
	     	checkForTriggerEvent(e);	
	    }		
   }
public void mouseDragged(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
   }

   public static void main(String[] args) {
	    try {
				  	UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel" );
			} catch (Exception e) { 
      System.out.println("Teste");
  }
	    new MenuFrame();	
   }

}[/code]

Fonte: Adaptação do livro Java Como Programar 4° Ed.

[]'s

Senhores. boa noite.
Estou procurando uma forma de configurar os itens disponiveis na pleta do swing para desenvolver uma aplicação MDI. Até o momento encontro documentação tratando de códigos e implementação de classes, mas gostaria que alguém explicasse isto na forma mais produtiva que o netbeans disponibiliza, o arrastar e soltar os componentes.
Tem até um exemplo pronto de implementação do formulário MDI no netbeans, mas ele não implenta nenhum menu interno, ou seja ficamos sem saber como configurar .

Solicito ajuda.
E fico no aguardo.

Anderson.

PS ja baixei até o openSwing mas não posso perder tempo agora para aprender a utiliza-lo. O TCC tem tempo para entrega.
Grato.

Olá amigo

dê uma olhada em:

http://oswing.sourceforge.net/

Boa Sorte

Silvio Guedes

O JInternalFrame tem que ficar dentro de um JDesktopPane.
E o JDesktopPane tem que ficar dentro de JFrame. :wink: