Paneles.java_



import java.awt.*;
import java.awt.event.*;

// Objetivo:
//	Se Crea una interfaz con los siguientes componentes:
//	2 de tipo Choice
hoice anterior
segundo Choice
//	2 de tipo Panel para permitir el trazo de primitivas indicadas en el primer Choice.
//	1 de tipo Scrollbar para indicarnos
//		El radio del circulo
//		El largo de la arista del cuadro
// --------------------------------------------------------------------
eleccionado en el otro Choice
// Cuando se seleccione un Panel, inmediatamente se dibujara la primitiva indicada en el primer choice.

public class Paneles extends java.applet.Applet
{
	Choice CH_Primitiva, CH_Panel;
	Button BLimpiar;
	AreaGrafica P_Izq, P_Der;
	TextField TF = new TextField();

	public void init ( )
	{
		setLayout(null);		// Se fija al contenedor ABSOLUTO
		
		// Choice de las primitivas
		CH_Primitiva = new Choice( );
		CH_Primitiva.add("Circulo");
		CH_Primitiva.add("Cuadro");
		CH_Primitiva.setBounds(10, 10, 100, 30);		// Se posiciona en el contenedor
		CH_Primitiva.addItemListener(new EVENTO_CHOICE_P( ));	// Se captura al evento
		
		// Choice de los paneles
		CH_Panel = new Choice( );
		CH_Panel.add("Derecha");
		CH_Panel.add("Izquierda");
		add(CH_Panel);
		CH_Panel.setBounds(120, 10, 100, 30);
		
		// Botòn
		BLimpiar = new Button("Limpiar");
		add(BLimpiar);
		BLimpiar.setBounds(230, 10, 100, 30);
		BLimpiar.addActionListener( new EVENTO_BOTON( ) );		// Captura del evento
		
		// Panel izquierdo
		P_Izq = new AreaGrafica(  );
		add(P_Izq);
		P_Izq.setBounds(10, 50, 200, 200);
		P_Izq.setBackground(Color.orange);
		
		// Panel derecho
		P_Der = new AreaGrafica(  );
		add(P_Der);
		P_Der.setBounds(220, 50, 200, 200);
		P_Der.setBackground(Color.blue);
	}
	
	class EVENTO_SCROLL implements AdjustmentListener
	{
		public void adjustmentValueChanged(AdjustmentEvent e)
		{
			TF.setText("RAFA");
		}
	}

	class EVENTO_BOTON implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			String CAD = CH_Panel.getSelectedItem( );
			
			if (CAD.equals("Derecha") )
				P_Der.Limpia( );
			else
				P_Izq.Limpia( );
		}
	}
	
	class EVENTO_CHOICE_P implements ItemListener
	{
		public void itemStateChanged(ItemEvent e)
		{
			String CAD = CH_Panel.getSelectedItem( );
			String Primitiva = (String)e.getItem( );
			AreaGrafica PANEL;
			
			if (CAD.equals("Derecha") )
				PANEL = P_Der;
			else
				PANEL = P_Izq;
				
			if (Primitiva.equals("Linea"))
				PANEL.Dibuja(1);
			if (Primitiva.equals("Circulo"))
				PANEL.Dibuja(2);
			if (Primitiva.equals("Cuadro"))
				PANEL.Dibuja(3);
		}
	}
}

class AreaGrafica extends Panel
{
	int LINEA = 1;
	int CIRCULO = 2;
	int CUADRO = 3;
	int Tipo = 0;

	void Dibuja(int Tipo)
	{
		this.Tipo = Tipo;
		repaint( );
	}
	
	void Limpia( )
	{
		Tipo = 4;
		repaint( );
	}
	
	public void paint(Graphics R)
	{
		R.setColor(Color.white);
		switch (Tipo)
		{
			case 1:
					R.drawLine(10, 10, 100, 10);
					break;
			case 2:
					R.drawOval(10, 10, 50, 50);
					break;
			case 3:
					R.drawRect(10, 10, 100, 100);
					break;
			case 4:
					R.clearRect(0, 0, 400, 400);
		}
	}
}