IFrame e JInternalFrame

2 respostas
D

Oi galera, to com uma dúvida!!! Não consigo descobrir onde tô errando. Tô começando a aprender sobre mdi e não to conseguindo fazer o JInternalFrame aparecer no meu JFrame. Se alguém puder me ajudar eu agradeço muitíssimo.

código: AplicacaoMDI.java

import javax.swing.<em>;

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

import java.awt.<em>;

import java.beans.</em>;
public class AplicacaoMDI extends JFrame implements ActionListener

{

private JDesktopPane DPane;
public AplicacaoMDI()

{

addWindowListener(new WindowAdapter()

{public void windowClosing(WindowEvent e){System.exit(0);}});

setSize(900,700);

setLocation(0,0);

setTitle(Aplicação MDI com Barra de Ferramentas e Menu Flutuante);
//criação do menu
JMenuBar BarraMenu = new JMenuBar();
setJMenuBar(BarraMenu);
JMenu menuArquivo = new JMenu("Arquivo");
menuArquivo.setMnemonic('A');
JMenuItem itemAbrirUm = new JMenuItem("Abrir1",new ImageIcon("EstrelaUm.gif"));
itemAbrirUm.setMnemonic('U');
JMenuItem itemAbrirDois= new JMenuItem("Abrir2",new ImageIcon("EstrelaDois.gif"));
itemAbrirDois.setMnemonic('D');
JMenuItem itemSair= new JMenuItem("Sair",new ImageIcon("Sair.gif"));
itemSair.setMnemonic('r');
itemSair.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.ALT_MASK));;

menuArquivo.add(itemAbrirUm);
menuArquivo.add(itemAbrirDois);
menuArquivo.addSeparator();
menuArquivo.add(itemSair);
BarraMenu.add(menuArquivo);
itemAbrirUm.addActionListener(this);
itemAbrirDois.addActionListener(this);
itemSair.addActionListener(this);


Container P = getContentPane();
P.setLayout(new BorderLayout());

// criação da área para inserção de frames internos
DPane = new JDesktopPane();
DPane.putClientProperty("JDesktopPane.dragMode", "outline");
P.add(DPane,"Center");

}

public void actionPerformed(ActionEvent evt)

{

if(evt.getSource() instanceof JMenuItem){

//faz um casting do source do evento para um JMenuItem

JMenuItem itemAbrirUm = (JMenuItem)evt.getSource();

String nomeMenuItem = itemAbrirUm.getName();
if(nomeMenuItem.equalsIgnoreCase("itemAbrirUm")){
    		 	
  FrameUm IFrameUm = new FrameUm();
  IFrameUm.setVisible(true);
  DPane.add(IFrameUm);    
}

/*else if (item == "Abrir2")
{
	
  Frame IFrameDois = new Frame();
  IFrameDois.setVisible(true);
  
  DPane.add(IFrameDois);    
}*/
}

}

public static void main(String args[])

{

AplicacaoMDI fr = new AplicacaoMDI();

fr.setVisible(true);

}

}

Código: FrameUm.java

import javax.swing.;
import java.awt.
;

public class FrameUm extends JInternalFrame{
public Button BotaoFechar;

public FrameUm(){
 this.setTitle("Frame Interno Um");
 this.setClosable(true);
 this.setResizable(true);
 this.setMaximizable(true);
 this.setIconifiable(true);
 this.setSize(250,150);
 this.setLocation(20,20);
 this.setFrameIcon(new ImageIcon("EstrelaUm.gif"));
 this.setVisible(true);
 

}

}

Desde já agradeço a todos!!!

2 Respostas

dsfextreme

Cara o erro está aqui ...

//Eu faria diferente aqui.............dsfextreme

if(evt.getSource() instanceof JMenuItem){

   //faz um casting do source do evento para um JMenuItem 
   //Pra que isso ??????
   //JMenuItem itemAbrirUm = (JMenuItem)evt.getSource(); 
   //  Pra que isso ??????
   //String nomeMenuItem = itemAbrirUm.getName(); 
   //  Pra que isso ??????
   //if(nomeMenuItem.equalsIgnoreCase("Abrir1")){ 

    FrameUm IFrameUm = new FrameUm(); 
    DPane.add(IFrameUm);
    IFrameUm.setVisible(true); 

//}

não mostra no console ae não ?
Seu código alterado e funcionando....

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

public class AplicacaoMDI extends JFrame implements ActionListener 
{ 
private JDesktopPane DPane; 
private JMenuItem itemAbrirUm;
public AplicacaoMDI() 
{ 
addWindowListener(new WindowAdapter() 
{public void windowClosing(WindowEvent e){System.exit(0);}}); 
setSize(900,700); 
setLocation(0,0); 
setTitle("Aplicação MDI com Barra de Ferramentas e Menu Flutuante"); 

//criação do menu 
JMenuBar BarraMenu = new JMenuBar(); 
setJMenuBar(BarraMenu); 
JMenu menuArquivo = new JMenu("Arquivo"); 
menuArquivo.setMnemonic('A'); 
itemAbrirUm = new JMenuItem("Abrir1"); 
itemAbrirUm.setMnemonic('U'); 
JMenuItem itemAbrirDois= new JMenuItem("Abrir2"); 
itemAbrirDois.setMnemonic('D'); 
JMenuItem itemSair= new JMenuItem("Sair"); 
itemSair.setMnemonic('r'); 
itemSair.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.ALT_MASK));; 

menuArquivo.add(itemAbrirUm); 
menuArquivo.add(itemAbrirDois); 
menuArquivo.addSeparator(); 
menuArquivo.add(itemSair); 
BarraMenu.add(menuArquivo); 
itemAbrirUm.addActionListener(this); 
itemAbrirDois.addActionListener(this); 
itemSair.addActionListener(this); 


Container P = getContentPane(); 
P.setLayout(new BorderLayout()); 

// criação da área para inserção de frames internos 
DPane = new JDesktopPane(); 
DPane.putClientProperty("JDesktopPane.dragMode", "outline"); 
P.add(DPane,"Center"); 
} 

public void actionPerformed(ActionEvent evt) 
{ 

//Eu faria diferente aqui.............dsfextreme

if(evt.getSource() instanceof JMenuItem){

   //faz um casting do source do evento para um JMenuItem 
   //Pra que isso ??????
   //JMenuItem itemAbrirUm = (JMenuItem)evt.getSource(); 
     Pra que isso ??????
   //String nomeMenuItem = itemAbrirUm.getName(); 
     Pra que isso ??????
   //if(nomeMenuItem.equalsIgnoreCase("Abrir1")){ 

    FrameUm IFrameUm = new FrameUm(); 
    DPane.add(IFrameUm);
    IFrameUm.setVisible(true); 

//} 

/*else if (item == "Abrir2") 
{ 

Frame IFrameDois = new Frame(); 
IFrameDois.setVisible(true); 

DPane.add(IFrameDois); 
}*/ 
} 
} 
public static void main(String args[]) 
{ 
AplicacaoMDI fr = new AplicacaoMDI(); 
fr.setVisible(true); 
} 
}

Um abraço !

D

Obrigada pela ajuda!!!
Um abraço

Criado 30 de maio de 2006
Ultima resposta 31 de mai. de 2006
Respostas 2
Participantes 2