This Java tip illustrates a sample Swing application that manages several internal frames. This is the main class for working with the SiteFrame and PageFrame classes. This tip may be used by developers who are looking for creating a managing module that looks after various internal frames of their application.

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

public class SiteManager extends JFrame {

  JLayeredPane desktop;
  Vector popups = new Vector();

  public SiteManager() {

    super("Web Site Manager");
    setSize(450, 250);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    Container contentPane = getContentPane();

    JToolBar jtb = new JToolBar();
    jtb.add(new CutAction(this));
    jtb.add(new CopyAction(this));
    jtb.add(new PasteAction(this));
    contentPane.add(jtb, BorderLayout.NORTH);
    
    // Add our LayeredPane object for the internal frames.
    desktop = new JDesktopPane();
    contentPane.add(desktop, BorderLayout.CENTER);
    addSiteFrame("Sample");

  }

  public static void main(String args[]) {

    SiteManager mgr = new SiteManager();
    mgr.setVisible(true);
  }

  // Methods to create our internal frames
  public void addSiteFrame(String name) {

    SiteFrame sf = new SiteFrame(name, this);
    popups.addElement(sf);
    desktop.add(sf, new Integer(2));  // Keep sites on top for now
    sf.setVisible(true);

  }

  public void addPageFrame(String name) {

    PageFrame pf = new PageFrame(name, this);
    desktop.add(pf, new Integer(1));
    pf.setVisible(true);
    pf.setIconifiable(true);
    popups.addElement(pf);

  }

  public JInternalFrame getCurrentFrame() {

    for (int i = 0; i < popups.size(); i++) {
      JInternalFrame currentFrame = (JInternalFrame)popups.elementAt(i);
      if (currentFrame.isSelected()) {
        return currentFrame;
      }
    }

    return null;
  }
}