import java.awt.BorderLayout;
import java.awt.event.*;
import java.beans.PropertyVetoException;

import javax.swing.*;


/**
 * @author Remi Forax
 *
 */
public class Interne {

  static JCheckBox createCheckBox(final JInternalFrame frame) {
    final JCheckBox checkBox=new JCheckBox(frame.getTitle());
    checkBox.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        try {
          frame.setIcon(checkBox.isSelected());
        } catch (PropertyVetoException e1) {
          e1.printStackTrace();
        }
      }
    });
    return checkBox;
  }

  static int counter;

  public static void main(String[] args) {
    JFrame frame=new JFrame();
    
    final JDesktopPane desktop=new JDesktopPane();
    
    final JPanel panel=new JPanel(null);
    panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
    
    Action newAction=new AbstractAction("New") {
      public void actionPerformed(ActionEvent e) {
        
        int number=counter++;
        JInternalFrame internal=new JInternalFrame("fenêtre "+number);
        internal.setSize(100,100);
        internal.setVisible(true);
        desktop.add(internal);
        desktop.revalidate();
        
        panel.add(createCheckBox(internal));
        panel.revalidate();
      }
    };
    
    JInternalFrame internal=new JInternalFrame("main");
    desktop.add(internal);
    
    JMenuBar bar=new JMenuBar();
    JMenu menu=new JMenu("Fenêtre");
    bar.add(menu);
    menu.add(newAction);
    
    internal.setSize(200,250);
    internal.setVisible(true);
    internal.setJMenuBar(bar);
    internal.getContentPane().add(panel);
    internal.getContentPane().add(new JButton(newAction),BorderLayout.SOUTH);
    
    frame.setContentPane(desktop);
    
    frame.setSize(400,300);
    frame.setVisible(true);
  }
}
