ComponentesVarios.java_



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

// OBJETIVO:
//	Crear un conjunto de componentes visible o invisibles.
//	El tipo, la cantidad, y el atributo de visibilidad se controlan cada uno por un choice.
oice de cantidad)

public class ComponentesVarios extends Applet
{
	Label SALIDA = new Label();
	Choice ChoiceN, ChoiceVisible,  ChoiceComponentes;
	TextField TF[ ];
	Button BOK;

	public void init( )
	{
		setLayout(null); 		// Fijamos al contenedor
		setBackground(new Color((float)0.4, (float)1.0, (float)0.0));
		SALIDA.setBounds(300, 400, 150, 30);
		add(SALIDA);
		
		Button BOK = new Button("OK");
		add(BOK);
		BOK.setBounds(300, 10, 40, 30);
		BOK.addActionListener(new EVENTO_BOTON());
		
		// Se crean las etiquetas que forman parte de la interfaz
		Label LComponente = new Label("COMPONENTE");
		Label LVisible = new Label("VISIBLE");
		Label LN = new Label("N");
		LComponente.setBackground(Color.black);
		LVisible.setBackground(Color.black);
		LN.setBackground(Color.black);
		LComponente.setForeground(Color.yellow);
		LVisible.setForeground(Color.yellow);
		LN.setForeground(Color.yellow);
		
		
		// Se añaden al contenedor
		add(LComponente); add(LVisible); add(LN);
		// Se posicionan en el contenedor
		LComponente.setBounds(10, 10, 120, 30);	//	-(x, y, ancho, alto)-.
		LVisible.setBounds(140, 10, 100, 30);
		LN.setBounds(250, 10, 40, 30);
		
		// Creaciòn de la lista de componentes
		ChoiceComponentes = new Choice();
		ChoiceComponentes.add("Checkbox") ;		ChoiceComponentes.add("Choice") ;		ChoiceComponentes.add("List") ;
		add(ChoiceComponentes);		// Añadir al contenedor
		ChoiceComponentes.setBounds(10, 50, 120, 30);
		//ChoiceComponentes.addItemListener(new EVENTO_CHOICE( )) ;		// Captura del evento
		
		// Creaciòn de los otros 2 choices -visible & N-
		ChoiceVisible = new Choice();
		ChoiceVisible.add("Si") ; 	ChoiceVisible.add("No") ;
		add(ChoiceVisible);		// Añadir al contenedor
		ChoiceVisible.setBounds(140, 50, 100, 30);
		
		ChoiceN = new Choice();
		ChoiceN.add("1") ; ChoiceN.add("2") ; ChoiceN.add("3") ; ChoiceN.add("4") ;  ChoiceN.add("5") ;
		add(ChoiceN);		// Añadir al contenedor
		ChoiceN.setBounds(250, 50, 40, 30);
	}
	
	class EVENTO_CHOICE implements  ItemListener
	{
		public void itemStateChanged(ItemEvent RAFA)
		{
			String CAD = (String)RAFA.getItem();
			SALIDA.setText(CAD);
		}
	}
	
	class EVENTO_BOTON_2 implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			String Tipo = ChoiceComponentes.getSelectedItem( );
			String Visible = ChoiceVisible.getSelectedItem( );
			int y = 100;
			boolean VISIBLE;
			
			if ( Visible.equals("Si") )	VISIBLE = true;
			else				VISIBLE = false;
			
			if (Tipo.equals("Checkbox"))
			{
				Checkbox CB[ ] = new Checkbox[ TF.length ];
				
				for (int k = 0; k < TF.length; k++)
				{
					CB[k] = new Checkbox( TF[k] .getText( ));
					TF[ k ].removeNotify( );
					add( CB[ k ] );
					CB[ k ].setBounds(100, y, 100, 30);
					CB[ k ].setVisible(VISIBLE);
					y += 35;
				}
			}

			if (Tipo.equals("Choice"))
			{
				Choice CB = new Choice( );

				for (int k = 0; k < TF.length; k++)
				{
					CB.add( TF[k] .getText( ));
					TF[ k ].removeNotify( );
				}
				add( CB);
				CB.setBounds(100, 100, 100, 30);
				CB.setVisible(VISIBLE);
			}
			
			if (Tipo.equals("List"))
			{
				List CB = new List( );
				
				for (int k = 0; k < TF.length; k++)
				{
					CB.add( TF[k] .getText( ));
					TF[ k ].removeNotify( );
				}
				add( CB);
				CB.setBounds(100, 100, 100, 30);
				CB.setVisible(VISIBLE);
			}
			BOK.removeNotify( );
		}
	}
	
	class EVENTO_BOTON implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			int Opciones =  Integer.parseInt(ChoiceN.getSelectedItem()  );
			TF = new TextField[ Opciones];
			
			BOK = new Button("OK");
			add(BOK);
			BOK.addActionListener(new EVENTO_BOTON_2());

			int y = 100;
			
			for (int k = 0; k < Opciones; k++)
			{
				TF[ k ] = new TextField( );
				add(TF[k]); TF[k].setBounds(100, y, 100, 30);
				y += 35;
			}
			BOK.setBounds(100, y, 40, 30);
		}
	}	
}