import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class InternalFrameEx extends JFrame {
  JDesktopPane desktop;

  public InternalFrameEx() {
    super("Internal Frame Example");
    int inset = 50;
    Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
    setBounds(inset,inset,screenSize.width - inset*2,screenSize.height-inset*2);

    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });

    desktop = new JDesktopPane();
    createFrame();
    setContentPane(desktop);
    setJMenuBar(createMenuBar());
    desktop.putClientProperty("JDesktopPane.dragMode","outline");
  }

  protected JMenuBar createMenuBar() {
    JMenuBar menuBar = new JMenuBar();

    JMenu menu = new JMenu("Document");
    menu.setMnemonic(KeyEvent.VK_D);
    JMenuItem menuItem = new JMenuItem("New");
    menuItem.setMnemonic(KeyEvent.VK_N);

    menuItem.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        createFrame();
      }
    });

    menu.add(menuItem);
    menuBar.add(menu);

    return menuBar;
  }

  protected void createFrame() {
    InternalFrame frame = new InternalFrame();
    frame.setVisible(true);
    desktop.add(frame);
    try {
      frame.setSelected(true);
    } catch (java.beans.PropertyVetoException e) {}
  }

  public static void main(String[] args) {
    InternalFrameEx frame = new InternalFrameEx();
    frame.setVisible(true);
  }
}


