import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JCheckBox;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;

import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.WindowConstants;
import javax.swing.border.LineBorder;


public class Visualizador extends JFrame {

	/** Declaração dos componentes da interface visual * */
	private JDesktopPane desktop;

	private JTabbedPane tabbedPane;

	private JPanel panelOpcoes;

	private JCheckBox bt1;

	private JCheckBox bt2;

	private JCheckBox bt3;

	private JCheckBox bt4;

	private JCheckBox bt5;

	private JInternalFrame frameBt1;

	private JInternalFrame frameBt2;

	private JInternalFrame frameBt3;

	private JInternalFrame frameBt4;

	private JInternalFrame frameBt5;
	
	/** Construtor do JFrame */
	public Visualizador() {

		initComponents();
	}

	private void initComponents() {

		/** Instanciação dos componentes da interface visual* */

		desktop = new JDesktopPane();

		tabbedPane = new JTabbedPane();

		panelOpcoes = new JPanel();

		bt1 = new JCheckBox("Frame1");
		bt2 = new JCheckBox("Frame2");
		bt3 = new JCheckBox("Frame3");
		bt4 = new JCheckBox("Frame4");
		bt5 = new JCheckBox("Frame5");

		frameBt1 = new JInternalFrame("Frame1", true, true, true, true);
		frameBt2 = new JInternalFrame("Frame2", true, true, true, true);
		frameBt3 = new JInternalFrame("Frame3", true, true, true, true);
		frameBt4 = new JInternalFrame("Frame4", true, true, true, true);
		frameBt5 = new JInternalFrame("Frame5", true, true, true, true);
		
		desktop.setLayout(new GridLayout(2, 0));
		desktop.add(frameBt1);
		desktop.add(frameBt2);
		desktop.add(frameBt3);
		desktop.add(frameBt4);
		desktop.add(frameBt5);
		
		/** Título da janela * */
		setTitle("JInternalFrames");

		/** Evento fecha JFrame * */
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent evt) {

				System.exit(0);
			}
		});

		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

		/** Layout ************************************** */
		getContentPane().setLayout(new BorderLayout(1, 1));

		/** JDesktop ************************************ */
		desktop.setBorder(new LineBorder(new Color(0, 0, 0)));

		/** JTabbedPane ********************************* */
		tabbedPane.setBorder(new LineBorder(new Color(0, 0, 0)));

		bt1.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent evt) {

				bt1Action(evt);
			}
		});
		panelOpcoes.add(bt1);

		bt2.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent evt) {

				bt2Action(evt);
			}
		});
		panelOpcoes.add(bt2);

		bt3.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent evt) {

				bt3Action(evt);
			}
		});
		panelOpcoes.add(bt3);


		bt4.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent evt) {

				bt4Action(evt);
			}
		});
		panelOpcoes.add(bt4);


		bt5.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent evt) {

				bt5Action(evt);
			}
		});
		panelOpcoes.add(bt5);

		/** Adicionar ao JTabbedPane * */
		tabbedPane.addTab("Ver Frames", panelOpcoes);

		getContentPane().add(tabbedPane, BorderLayout.SOUTH);
		getContentPane().add(desktop, BorderLayout.CENTER);


	/** *********** Tamanho da JFrame *********************************** */

		this.pack();
		this.setExtendedState(MAXIMIZED_BOTH);

	} //Fim initComponent()

	/** ************ Métodos de tratamento de eventos ******************** */

	/** JCheckBox * */
	private void bt1Action(ActionEvent evt) {

		if (bt1.isSelected()) {

			frameBt1.setVisible(true); //seta visibilidade
			
		} else {
			frameBt1.setVisible(false);
		}
	}

	private void bt2Action(ActionEvent evt) {

		if (bt2.isSelected()) {

			frameBt2.setVisible(true); //seta visibilidade
			
		} else {
			frameBt2.setVisible(false);
		}
	}

	private void bt3Action(ActionEvent evt) {

		if (bt3.isSelected()) {

			frameBt3.setVisible(true); //seta visibilidade
			
		} else {
			frameBt3.setVisible(false);
		}
	}

	private void bt4Action(ActionEvent evt) {

		if (bt4.isSelected()) {

			frameBt4.setVisible(true); //seta visibilidade
			
		} else {
			frameBt4.setVisible(false);
		}
	}

	private void bt5Action(ActionEvent evt) {

		if (bt5.isSelected()) {

			frameBt5.setVisible(true); //seta visibilidade
			
		} else {
			frameBt5.setVisible(false);
		}
	}

	/** Saída da aplicação */
	private void exitForm(WindowEvent evt) {

		System.exit(0);
	}

	public static void main(String args[]) {

		JFrame.setDefaultLookAndFeelDecorated(true);
		Visualizador tela = new Visualizador();
		tela.setVisible(true);

	}
}