MultiPanel.java



// Multiventana (1 a 4)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.media.opengl.*;
import javax.media.opengl.glu.*;
import com.sun.opengl.util.GLUT;


public class MultiPanel extends JFrame
{
	Rectangle DIM = null;
	JMenu Opciones;
	JMenuItem Paneles[] = new JMenuItem[11];	// Son 10 combinaciones y uno para la opciOn salir
	JMenuItem menuItem;
	PanelVista Ventanitas[] = new PanelVista[4];
	int VPrev = 4;					// Indica la cantidad de ventanas creadas con anterioridad. 4 al iniciar ...
	int Ancho, Alto;

	public MultiPanel ()
	{
		int PanelN = 0;
		String PanelTitulo[] = {"Uno", "2Horizontal", "2Vertical", "3Horizontal", "3Vertical", "3_VHH", "3_HHV", "3_VVH", "3_HVV", "4", "Salir"};
		getContentPane().setLayout(null); setTitle("Varias Vistas ... "); setResizable(false); setBounds(50, 50, 900, 900); toFront();

		JMenuBar BarraMenu = new JMenuBar(); Opciones = InsertaMenu("Opciones");
		while(PanelN != 11) { Paneles[PanelN] = new JMenuItem(); InsertaItem(Opciones, Paneles[PanelN], PanelTitulo[PanelN]); PanelN++; }
		BarraMenu.add(Opciones); setJMenuBar(BarraMenu); this.setVisible(true);
		DIM = this.getBounds();
		Ventanitas[0] = new PanelVista(Color.blue, 1, 1); Ventanitas[1] = new PanelVista(Color.blue, 1, 1);
		Ventanitas[2] = new PanelVista(Color.blue, 1, 1); Ventanitas[3] = new PanelVista(Color.blue, 1, 1);
	}

	JMenu InsertaMenu(String CAD) { return new JMenu(CAD); }
	void InsertaItem(JMenu MENU, JMenuItem ITEM, String CAD)
	{ ITEM = new JMenuItem(CAD); MENU.add(ITEM); ITEM.addActionListener(new Evento_Opciones()); }

	public static void main(String R[]) { new MultiPanel(); }
	protected void processWindowEvent(WindowEvent e) { if (e.getID() == WindowEvent.WINDOW_CLOSING) System.exit(0); }

	class Evento_Opciones implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			if (e.getActionCommand().equals("Salir"))      System.exit(0); if (e.getActionCommand().equals("Uno"))		Paneles(1, 0);
			if (e.getActionCommand().equals("2Horizontal"))	Paneles(2, 0); if (e.getActionCommand().equals("2Vertical"))	Paneles(2, 1);
			if (e.getActionCommand().equals("3Horizontal")) Paneles(3, 0); if (e.getActionCommand().equals("3Vertical"))	Paneles(3, 1);
			if (e.getActionCommand().equals("3_VHH"))       Paneles(3, 2); if (e.getActionCommand().equals("3_HHV"))	Paneles(3, 3);
			if (e.getActionCommand().equals("3_VVH"))       Paneles(3, 4); if (e.getActionCommand().equals("3_HVV"))	Paneles(3, 5);
			if (e.getActionCommand().equals("4"))       	Paneles(4, 0);
		}
	}

	void Paneles(int N, int Posicion)			// (NVentanas, <0=hrz, 1=vert>)
	{
		int k=0;
		for (k=0; k<VPrev; k++) Ventanitas[k].setVisible(false); VPrev = N;
		//for (k=0; k<VPrev; k++) remove(Ventanitas[k]); VPrev = N;

		switch (N)
		{
			case 1: Ventanitas[0] = new PanelVista(Color.blue, Ancho(1), Alto(1)); CreaVentana(0, 5, 5, Ancho(1), Alto(1)); break;
			case 2:
				if (Posicion == 0)		// Horizontales
				{
					Ventanitas[0] = new PanelVista(Color.blue, Ancho(1), Alto(2)); CreaVentana(0, 5, 5, Ancho(1), Alto(2));
					Ventanitas[1] = new PanelVista(Color.red, Ancho(1), Alto(2)); CreaVentana(1, 5, Alto(2)+10, Ancho(1), Alto(2));
				}
				if (Posicion == 1)		// Verticales
				{
					Ventanitas[0] = new PanelVista(Color.blue, Ancho(2), Alto(1)); CreaVentana(0, 5, 5, Ancho(2), Alto(1));
					Ventanitas[1] = new PanelVista(Color.red, Ancho(2), Alto(1)); CreaVentana(1, Ancho(2)+10, 5, Ancho(2), Alto(1));
				} break;
			case 3:
				if (Posicion == 0)		// Horizontales
				{
					Ventanitas[0] = new PanelVista(Color.blue, Ancho(1), Alto(3)); CreaVentana(0, 5, 5, Ancho(1), Alto(3));
					Ventanitas[1] = new PanelVista(Color.red, Ancho(1), Alto(3)); CreaVentana(1, 5, Alto(3)+8, Ancho(1), Alto(3));
					Ventanitas[2] = new PanelVista(Color.green, Ancho(1), Alto(3)); CreaVentana(2, 5, Alto(3)*2+12, Ancho(1), Alto(3));
				}
				if (Posicion == 1)		// Verticales
				{
					Ventanitas[0] = new PanelVista(Color.blue, Ancho(3), Alto(1)); CreaVentana(0, 5, 5, Ancho(3), Alto(1));
					Ventanitas[1] = new PanelVista(Color.red, Ancho(3), Alto(1)); CreaVentana(1, Ancho(3)+8, 5, Ancho(3), Alto(1));
					Ventanitas[2] = new PanelVista(Color.green, Ancho(3), Alto(1)); CreaVentana(2, Ancho(3)*2+12, 5, Ancho(3), Alto(1));
				}
				if (Posicion == 2)		// V HH
				{
					Ventanitas[0] = new PanelVista(Color.blue, Ancho(2), Alto(1)); CreaVentana(0, 5, 5, Ancho(2), Alto(1));
					Ventanitas[1] = new PanelVista(Color.red, Ancho(2), Alto(2)); CreaVentana(1, Ancho(2)+10, 5, Ancho(2), Alto(2));
					Ventanitas[2] = new PanelVista(Color.green, Ancho(2), Alto(2)); CreaVentana(2, Ancho(2)+10, Alto(2)+10, Ancho(2), Alto(2));
				}
				if (Posicion == 3)		// HH V
				{
					Ventanitas[0] = new PanelVista(Color.red, Ancho(2), Alto(2)); CreaVentana(0, 5, 5, Ancho(2), Alto(2));
					Ventanitas[1] = new PanelVista(Color.green, Ancho(2), Alto(2)); CreaVentana(1, 5, Alto(2)+10, Ancho(2), Alto(2));
					Ventanitas[2] = new PanelVista(Color.blue, Ancho(2), Alto(1)); CreaVentana(2, Ancho(2)+10, 5, Ancho(2), Alto(1));
				}
				if (Posicion == 4)		// V V H
				{
					Ventanitas[0] = new PanelVista(Color.red, Ancho(2), Alto(2)); CreaVentana(0, 5, 5, Ancho(2), Alto(2));
					Ventanitas[1] = new PanelVista(Color.green, Ancho(2), Alto(2)); CreaVentana(1, Ancho(2)+10, 5, Ancho(2), Alto(2));
					Ventanitas[2] = new PanelVista(Color.blue, Ancho(1), Alto(2)); CreaVentana(2, 5, Alto(2)+10, Ancho(1), Alto(2));
				}
				if (Posicion == 5)		// H V V
				{
					Ventanitas[0] = new PanelVista(Color.blue, Ancho(1), Alto(2)); CreaVentana(0, 5, 5, Ancho(1), Alto(2));
					Ventanitas[1] = new PanelVista(Color.red, Ancho(2), Alto(2)); CreaVentana(1, 5, Alto(2)+10, Ancho(2), Alto(2));
					Ventanitas[2] = new PanelVista(Color.green, Ancho(2), Alto(2)); CreaVentana(2, Ancho(2)+10, Alto(2)+10, Ancho(2), Alto(2));
				}
				break;
			case 4:
				Ventanitas[0] = new PanelVista(Color.blue, Ancho(2), Alto(2)); CreaVentana(0, 5, 5, Ancho(2), Alto(2));
				Ventanitas[1] = new PanelVista(Color.green, Ancho(2), Alto(2)); CreaVentana(1, Ancho(2)+10, 5, Ancho(2), Alto(2));
				Ventanitas[2] = new PanelVista(Color.red, Ancho(2), Alto(2)); CreaVentana(2, 5, Alto(2)+10, Ancho(2), Alto(2));
				Ventanitas[3] = new PanelVista(Color.cyan, Ancho(2), Alto(2)); CreaVentana(3, Ancho(2)+10, Alto(2)+10, Ancho(2), Alto(2));
		} 
	}

	void CreaVentana(int N, int x, int y, int Ancho, int Alto) { add(Ventanitas[N]); Ventanitas[N].setBounds(x, y, Ancho, Alto); }
	int Ancho(int N)
	{
		int Ancho = DIM.width; Alto = DIM.height;
		int Resp = 0;
		switch (N) { case 1: Resp =  Ancho - 10; break; case 2: Resp = (Ancho-15)/2; break; case 3: Resp = (Ancho-18)/3; break; }
		return Resp;
	}
	int Alto(int N)
	{
	      int Resp = 0;
	      switch (N) { case 1: Resp =  Alto - 60; break; case 2: Resp = (Alto - 65)/2; break; case 3: Resp = (Alto - 68)/3; break; }
	      return Resp;
	}
}

class PanelVista extends JPanel
{
	int Ancho=0, Alto=0;
	Color ColorFijo=null;

	public PanelVista(Color ColorFijo, int Ancho, int Alto)
	{
		this.ColorFijo = ColorFijo;
		this.Ancho=Ancho; this.Alto=Alto;
		setBackground(ColorFijo);
	}
}