JFrames e JInternal Frames

Olá a todos…

Tou com problemas na minha aplicação no que as InternalFrames diz respeito…o que eu pretendo e que a InternalFrame apareça por cima das outras componentes da aplicação…será que podiam dar uma vista de olhos ao código em baixo e a ver se alguém me pode ajudar?!..
O codigo apenas cria as componentes basicas da minha aplicação e kuando eu clico no Botao EDIT deveria aparecer-me a InternalFrame por cima das minhas componentes…o que acontece nao e bem isso…se maximizar a janela Frame Princiapl a InternalFrame aparece mas no desktopPane (visto as InternalFRames terem de ser adicionadas ao desktopPane)…entre duas componentes minhas…
Nao sei se me expliquei muito bem…mas se puderem dar uma vista de olhos ao codigo e dar-me uma dica agradecia imenso

Joao



import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;



public class TestInternalFrames extends JFrame{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	JInternalFrame internalFrame;
	JLayeredPane desktop;
	Container pane;


	public TestInternalFrames() {
	
		
		final JFrame window = new JFrame("Test");
	
		window.setSize(1000,600);
		window.setLocation(100, 100);
		

		// Container of my Frame
		pane = window.getContentPane();
		
				
		// Panels to add my components
		JPanel painel1 = new JPanel();
		JPanel painel2 = new JPanel();
		JPanel painel3 = new JPanel();
		
				
		/****
		 * 
		 *Menu Bar - Menu File| Menu Visualizations | Menu Help */
		
		// Menu Bar Painel
	    JMenuBar menuBar = new JMenuBar();

		// Menus 
		JMenu menuFile = new JMenu("File");
		JMenu menuVis = new JMenu("Visualizations");
		JMenu menuHelp = new JMenu("Help");
		
		// Items File Menu
		JMenuItem itemOpen = new JMenuItem("Open");
		JMenuItem itemQuit = new JMenuItem("Quit");
		
		// Items Visualizations Menu
		JMenuItem visRect = new JMenuItem("Rect");
		JMenuItem visPoint = new JMenuItem("Point");
		
		// Items Help Menu
		JMenuItem helpCont = new JMenuItem("Help Contents");
		JMenuItem helpAbout = new JMenuItem("About");
		
	
		// add Itens to File Menu
		menuFile.add(itemOpen);
		menuFile.add(itemQuit);
		
		// add Itens to Visualization Menu
		menuVis.add(visRect);
		menuVis.add(visPoint);
		
		// add Itens to Help Menu
		menuHelp.add(helpCont);
		menuHelp.add(helpAbout);
		
		
		
		// Add Menus to Menus Panel
		menuBar.add(menuFile);
		menuBar.add(menuVis);
		menuBar.add(menuHelp);
		
		
		/****
		 * ToolBar
		 */
		
		// ToolBar Buttons
		JButton zoomOut = new JButton("ZoomOut");
	    JButton zoomIn = new JButton("ZoomIn");
	    JButton pam = new JButton("Pan");
	    JButton scale = new JButton("Scale 1:1");
	    
	    // ToolBar
	    JToolBar toolBar = new JToolBar("Test");
	    
	    // Add buttons to ToolBar
	    toolBar.add(zoomOut);
	    toolBar.add(zoomIn);
	    toolBar.add(pam);
	    toolBar.add(scale);
	   
	   // defining Layout 
		painel1.setLayout(new GridLayout(2,1));
		painel1.add(menuBar);
		painel1.add(toolBar);
		
		
		
		
		// Visualization window - JScrollPane 
		JScrollPane scroller = new JScrollPane();
		scroller.setPreferredSize(new Dimension(700,300));
		
		// ScrollBars
		scroller.getVerticalScrollBar().setUnitIncrement(5);
		scroller.getHorizontalScrollBar().setUnitIncrement(5);
		
	
		// Events Log Panel
		JPanel painel7 = new JPanel();
		
		
		// Events Log
		JTextArea log = new JTextArea(5, 50);
		log.setMargin(new Insets(5,5,5,5));
        JScrollPane logScrollPane = new JScrollPane(log);

        painel7.add(logScrollPane);

		
        //defining Layout 
		painel2.setLayout(new BorderLayout());
		painel2.add(scroller, BorderLayout.CENTER);
		painel2.add(logScrollPane, BorderLayout.SOUTH);	
		
		
				
		// Open an Internal Frame when click in a button
		painel3.setLayout(new GridLayout(3,1));
		
		JPanel painel4 = new JPanel();
		
		JTextArea textArea = new JTextArea("Click to Open an Internal Frame", 5, 20);
			
		textArea.setLineWrap(true);
		textArea.setBackground(Color.GRAY);
		textArea.setWrapStyleWord(true);
		
		
		//////////
		
		JButton openButton;
	    openButton = new JButton("Edit");
	    
	    
	    
	    painel4.add(textArea);
		painel4.add(openButton);
		
	    addWindowListener(new WindowAdapter() {
	        public void windowClosing(WindowEvent e) {
	          System.exit(0);
	        }
	      });


	    desktop = new JDesktopPane();
	    desktop.setOpaque(false);
	    openButton.addActionListener(new OpenListener());
		
		
		
	    painel3.add(painel4);
	    
	        
	    pane.add(desktop, BorderLayout.CENTER); 
		   
		
		// Add final Panels to Container Pane of teh Frame
		pane.add(painel1, BorderLayout.NORTH);
		pane.add(painel2, BorderLayout.WEST);
		pane.add(painel3, BorderLayout.EAST);

	    
		
		
		window.setVisible(true);
		
	
	
	}
	

	
//	 An inner class to handle presses of the Open button
	  class OpenListener implements ActionListener {
	    public void actionPerformed(ActionEvent e) {
	      if ((internalFrame == null) || (internalFrame.isClosed())) {
	        internalFrame = new JInternalFrame("Internal Frame", false,
	        		false, false, false);
	        internalFrame.setBounds(50, 50, 200, 100);
	        
	        // adding something to the Internal frame
	        Container paneInternal = internalFrame.getContentPane();
	        JPanel jp = new JPanel();
	        JButton bt = new JButton("test");
	        jp.add(bt);
	        paneInternal.add(jp);
	        
	        desktop.add(internalFrame, new Integer(1));
	        internalFrame.moveToFront();    
	        internalFrame.setVisible(true);
	      }
	    }
	  }

	
	
	public static void main(String[] args) {
	
		
		TestInternalFrames window1 = new TestInternalFrames();
	
	}
	
	
}

Vc precisa trablahar com JDesktopPane para realizar o MDI(Multiple Document Interface)
Veja esse exemplo
ex:

import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JTextArea;

//Exemplo de criação e utilização de quadros internos
public class Teste71InternalFrameClass {

	public static void main(String[] args) {
		
		MyFrame janela = new MyFrame();
		janela.setSize(600,400);
		janela.setTitle("Teste com internal frame");
		janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		janela.setVisible(true);
	}
}

class MyFrame extends JFrame
{
	
	MyFrame()
	{
		JDesktopPane dp = new JDesktopPane();
		setContentPane(dp);
		
		JInternalFrame [] frame_array = new JInternalFrame[5];
		
		for (int i = 0; i &lt 5; i++)
		{
			frame_array[i] = new JInternalFrame("Janela" + i, true, true, true, true);
			
			//ajusta tamanho
			frame_array[i].reshape(i*10, i*10, 300, 300);
			
			//ajusta icone
			frame_array[i].setFrameIcon(
					new ImageIcon(getClass().getResource("icon\\icon.gif")));
			getContentPane().add(frame_array[i]);
			
			//adicionar um JTextArea a cada quadro interno
			JTextArea ta = new JTextArea();
			
			frame_array[i].add(ta);
			
			frame_array[i].setVisible(true);
			
			
		}
		
		
		
	
	}
}

Ola…antes de mais agradeço muito teres respondido…mas ja tentei correr o teu código e não dahh…:S…mas vou tentar percebo-lo a ver se o aplico ao meu codigo…

obrigado novamente!

Olha eu sei que estou a ser um pouco xato…mas estou um pouco apertado em termos de tempo…sera que nao podias correr o meu codigo e ver o que realmente se esta a passar…e depois explicar-me uma maneira de resolver…??..e que com o que aki colocas-te nao tou a conseguir perceber:s…sou novo na utilizaçao do JAVA Swing…e tou com algumas dificuldas…

obrigado pela atençao…

Retire no meu código esta linha:

//ajusta icone
 			frame_array[i].setFrameIcon(
 					new ImageIcon(getClass().getResource("icon\\icon.gif")));

LOL…ca estou eu outra x…mas o codigo continua a nao funcionar mesmo retirando essa linha que me falas.te…

dá estas excepções…

java.lang.Error: Do not use javax.swing.JInternalFrame.add() use javax.swing.JInternalFrame.getContentPane().add() instead
at javax.swing.JInternalFrame.createRootPaneException(JInternalFrame.java:416)
at javax.swing.JInternalFrame.addImpl(JInternalFrame.java:443)
at java.awt.Container.add(Container.java:307)
at MyFrame.(Teste71InternalFrameClass.java:45)
at Teste71InternalFrameClass.main(Teste71InternalFrameClass.java:12)
Exception in thread “main”

:S…