package boxlayout_applet;

import java.awt.*;
import javax.swing.*;

public class MiApplet extends JApplet {
   //// Etiquetas (justificado a la izquierda), textos y botones
   JLabel etiAncho = new JLabel( "Ancho:", SwingConstants.LEFT );
   JTextField txtAncho = new JTextField();
   JLabel etiAlto = new JLabel( "Alto:", SwingConstants.LEFT );
   JTextField txtAlto = new JTextField();
   JButton btnBoton1 = new JButton( "Botón 1" );
   JButton btnBoton2 = new JButton( "Botón 2" );
   JButton btnBoton3 = new JButton( "Botón 3" );

   //Initialize the applet
   public void init() {
      try {
	 //// Obtenemos tamaño del applet
	 int anchoApplet = this.getWidth();
	 int altoApplet = this.getHeight();

	 //// Contenedor raiz: BoxLayout
	 Container contRaiz = getContentPane();
	 contRaiz.setLayout( new BoxLayout( contRaiz, BoxLayout.PAGE_AXIS));
	 contRaiz.setBackground( Color.cyan);
	 btnBoton1.setAlignmentX( Component.CENTER_ALIGNMENT );
	 btnBoton2.setAlignmentX( Component.CENTER_ALIGNMENT );
	 btnBoton3.setAlignmentX( Component.CENTER_ALIGNMENT );

	 //// Introduzco ancho y alto de applet en los campos
	 txtAncho.setText( String.valueOf( anchoApplet));
	 txtAlto.setText( String.valueOf( altoApplet));

	 //// El texto se alinea a la derecha
	 txtAncho.setHorizontalAlignment( JTextField.RIGHT);
	 txtAlto.setHorizontalAlignment( JTextField.RIGHT);

	 //// Indico tamaño
	 setTamaño( etiAncho, 40,20);
	 setTamaño( txtAncho, 80,20);
	 setTamaño( etiAlto, 40,20);
	 setTamaño( txtAlto, 80,20);

         //// Añado etiquetas y campos a subpanel pnlAncho
         JPanel pnlAncho = new JPanel();            // Subpanel del ancho
	 pnlAncho.setLayout( new FlowLayout(FlowLayout.LEFT));
	 pnlAncho.setPreferredSize( new Dimension( anchoApplet, 24));
	 pnlAncho.setBackground( Color.BLUE);
	 pnlAncho.add( etiAncho );
	 pnlAncho.add( txtAncho );

	 //// Añado etiquetas y campos a subpanel pnlAlto
	 JPanel pnlAlto = new JPanel();             // Subpanel de la altura
	 pnlAlto.setLayout( new FlowLayout(FlowLayout.LEFT));
	 pnlAlto.setPreferredSize( new Dimension( anchoApplet, 24));
	 pnlAlto.setBackground( Color.GREEN);
	 pnlAlto.add( etiAlto );
	 pnlAlto.add( txtAlto );

	 //// Añado subpaneles y botón al panel raiz
	 contRaiz.add( pnlAncho );
	 contRaiz.add( pnlAlto );
	 contRaiz.add( Box.createVerticalGlue());
	 contRaiz.add( btnBoton1 );
	 contRaiz.add( Box.createRigidArea(new Dimension(3,3) ));
	 contRaiz.add( btnBoton2 );
	 contRaiz.add( Box.createRigidArea(new Dimension(3,3) ));
	 contRaiz.add( btnBoton3 );
      }
      catch(Exception e) {
	 e.printStackTrace();
      }
   }

   private void setTamaño( JComponent comp, int x, int y ) {
      Dimension tam = new Dimension( x, y );
      comp.setMaximumSize( tam );
      comp.setPreferredSize( tam );
   }
}
