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 ); } }