MDI Swing

7 respostas
Y

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?

7 Respostas

cv1

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:

M

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.<em>;

import java.awt.event.</em>;

import javax.swing.*;
public class Teste extends JIternalFrame

{

Teste()

{    }

public static void main( String args[] )

{ JInternalFrame a=new Teste();

a.show();
}

}

M

Poderia me dar um exemplo para eu entender melhor ?

Desde já muito obrigado

F

Segue um exemplo básico.

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 &#123;
	   JMenu menu;
	   JMenuItem exemp                                                   = new JMenuItem&#40;&quot;JInternalFrame&quot;&#41;;
	   JPopupMenu popup                                                  = new JPopupMenu&#40;&#41;;
	   String&#91;&#93; nomePopup                                                = &#123;&quot;JInternalFrame&quot;,&quot;Sair&quot;&#125;;
	   JMenuItem&#91;&#93; menuPopup                                             = new JMenuItem&#91;2&#93;;
	  	Color color                                                       = new Color&#40;200,200,200&#41;;//Color&#40;29,140,194&#41;;
	   JButton botaoSair                                                 = new JButton&#40;&quot;A&quot;&#41;;
	   static JButton botaoBackup                                        = new JButton&#40;&quot;B&quot;&#41;;
   	static JButton botaoNovo                                          = new JButton&#40;&quot;C&quot;&#41;;
    Container c;
    static JMenuBar menuBar;
    JDesktopPane desktop                                              = new JDesktopPane&#40;&#41;;
    static final Integer DOCLAYER                                     = new Integer&#40;5&#41;;
    static final Integer TOOLLAYER                                    = new Integer&#40;6&#41;;
    static final Integer HELPLAYER                                    = new Integer&#40;7&#41;;

    public MenuFrame&#40;&#41; &#123;
      super&#40;&quot;JInternalFrame&quot;&#41;;
      final int inset                                                 = 60;
      Dimension screenSize                                            = Toolkit.getDefaultToolkit&#40;&#41;.getScreenSize&#40;&#41;;
   		 setBounds &#40; inset, inset, screenSize.width - inset*2, screenSize.height - inset*2 &#41;;
		    buildContent&#40;&#41;;
		    buildMenus&#40;&#41;;
		    this.addWindowListener&#40;new WindowAdapter&#40;&#41; &#123;
	       public void windowClosing&#40;WindowEvent e&#41; &#123;
				      quit&#40;&#41;;
			     &#125;
      &#125;&#41;;
		    System.out.println&#40;&quot;Iniciando Menu Principal&quot;&#41;;
		    show&#40;&#41;;
   	&#125;

    protected void buildMenus&#40;&#41; &#123;
      menuBar                                                         = new JMenuBar&#40;&#41;;
	    	menuBar.setOpaque&#40;true&#41;;
    		menu                                                            = buildFileMenu&#40;&#41;;
    		menuBar.add&#40;menu&#41;;
    		setJMenuBar&#40;menuBar&#41;;
    		builPopup&#40;&#41;;
    &#125;

  	 public void builPopup&#40;&#41; &#123;
		    for&#40;int i=0; i&lt;2; i++&#41; &#123;
			     menuPopup&#91;i&#93;                                                  = new JMenuItem&#40;nomePopup&#91;i&#93;&#41;;
			     if&#40;i == 1&#41;
				      popup.addSeparator&#40;&#41;;
			     popup.add&#40;menuPopup&#91;i&#93;&#41;;
			     menuPopup&#91;i&#93;.addActionListener&#40;this&#41;;
		    &#125;
	   &#125;    
    

    protected JMenu buildFileMenu&#40;&#41; &#123;
    		menu = new JMenu&#40;&quot;Exemplo&quot;&#41;;
	    	menu.addActionListener&#40;this&#41;;
		    menu.setCursor&#40;Cursor.getPredefinedCursor&#40;Cursor.HAND_CURSOR&#41;&#41;;
	   		exemp.addActionListener&#40;new ActionListener&#40;&#41; &#123;
	    	  public void actionPerformed&#40;ActionEvent e&#41; &#123;
					     openWindow&#40;&#41;;
			    	&#125;
      &#125;&#41;;
    		menu.add&#40;exemp&#41;;
    		return menu;
	   &#125;

    protected void buildContent&#40;&#41; &#123;
      desktop.addMouseListener&#40;this&#41;;
      desktop.addMouseMotionListener&#40;this&#41;;
      getContentPane&#40;&#41;.add&#40;desktop&#41;;
      desktop.setBackground&#40;color&#41;;
    &#125;

    public void quit&#40;&#41; &#123;
		    int result                                                      = JOptionPane.showConfirmDialog&#40;null,&quot;Deseja realmente Sair?&quot;, &quot;Saindo&quot;, JOptionPane.WARNING_MESSAGE&#41;;
		    if &#40;result == JOptionPane.YES_OPTION&#41; &#123;
		      System.out.println&#40;&quot;Fechando Menu Principal&quot;&#41;;		
   			  System.exit&#40;0&#41;;
		    &#125;
    &#125;

    public void openWindow&#40;&#41; &#123;
    		JInternalFrame internal1                                        = new sobre&#40;&#41;;
		    desktop.add&#40;internal1, HELPLAYER&#41;;
		    try &#123; 
	    	  internal1.setVisible&#40;true&#41;;
	    	  internal1.setSelected&#40;true&#41;; 
		    &#125;	catch &#40;java.beans.PropertyVetoException e2&#41; &#123;&#125;
      &#125;

    public void actionPerformed&#40;ActionEvent e&#41; &#123;
    	 if&#40;e.getSource&#40;&#41; == menuPopup&#91;0&#93;&#41;
    		  openWindow&#40;&#41;;
    	 if&#40;e.getSource&#40;&#41; == menuPopup&#91;1&#93;&#41;
    		  quit&#40;&#41;;
     	if&#40;e.getSource&#40;&#41; == botaoSair&#41;
      		quit&#40;&#41;;
    &#125;	

	   public void mouseClicked&#40;MouseEvent e&#41; &#123;
	   &#125;

   	private void checkForTriggerEvent&#40;MouseEvent e&#41; &#123;
    		if&#40;e.isPopupTrigger&#40;&#41;&#41;
			     popup.show&#40;e.getComponent&#40;&#41;, e.getX&#40;&#41;, e.getY&#40;&#41;&#41;;
   	&#125;

   	public void mouseReleased&#40;MouseEvent e&#41; &#123;
		    if&#40;e.getSource&#40;&#41; == desktop&#41; &#123;
			     checkForTriggerEvent&#40;e&#41;;	
		    &#125;
   	&#125;

	   public void mouseEntered&#40;MouseEvent e&#41; &#123;
	   &#125;
		
	   public void mouseExited&#40;MouseEvent e&#41; &#123;
   	&#125;
	   public void mousePressed&#40;MouseEvent e&#41; &#123;
	    	if&#40;e.getSource&#40;&#41; == desktop&#41; &#123;
		     	checkForTriggerEvent&#40;e&#41;;	
		    &#125;		
	   &#125;
    public void mouseDragged&#40;MouseEvent e&#41; &#123;
    &#125;
   	public void mouseMoved&#40;MouseEvent e&#41; &#123;
	   &#125;
	
	   public static void main&#40;String&#91;&#93; args&#41; &#123;
		    try &#123;
					  	UIManager.setLookAndFeel&#40;&quot;com.sun.java.swing.plaf.windows.WindowsLookAndFeel&quot; &#41;;
  				&#125; catch &#40;Exception e&#41; &#123; 
          System.out.println&#40;&quot;Teste&quot;&#41;;
      &#125;
		    new MenuFrame&#40;&#41;;	
	   &#125;
  &#125;

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

[]'s

R

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.

S

Olá amigo

dê uma olhada em:

http://oswing.sourceforge.net/

Boa Sorte

Silvio Guedes

N

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

Criado 6 de dezembro de 2003
Ultima resposta 7 de jan. de 2004
Respostas 7
Participantes 7