Applets III Control de Disposicion

¿Como se colocan las cosas en pantalla? ¿ En que orden y de que manera? Eso es lo que hacen los gestores de disposición. Tanto JApplet, como JFrame, como JWindow, como JDialog pueden producir un Container invocando el método getContentPane(). Otras clases como JPanel pueden contener tambien componentes.

Hay varios tipos de controladores de la disposición en función de su complejidad y funcionalidad. Aqui tienes unos ejemplos de los mas comunes (y sencillos)

BorderLayout

Es el gestor por defecto y lo que hace es colocar los componentes en el centro y extenderlos hasta los bordes. Se puede especificar con un prefijo orientativo en que lado quieres que lo coloque.

// Bordes.java
import javax.swing.*;
import java.awt.*;
import net.juantxu.swing.*;

public class Bordes extends JApplet{
	public void init(){
		Container cn = getContentPane();
		cn.add( BorderLayout.NORTH, new JButton("Boton del norte") ); 
		cn.add( BorderLayout.SOUTH, new JButton("Boton del sur") ); 
		cn.add( BorderLayout.EAST, new JButton("Boton del este") ); 
		cn.add( BorderLayout.WEST, new JButton("Boton del oeste") ); 
		cn.add( BorderLayout.CENTER, new JButton("Boton del centro") ); 
	}	
	public static void main(String[] args){
		Console.run(new Bordes(), 300, 300);
	}
}

Ya has visto que con NORTH, SOUTH, EAST, WEST y CENTER puedes especificar en que borde lo pones. Aunque no es muy bueno porque si pones dos componentes te solapa uno encima del otro. Haz la prueba, pon 2 botones en el norte…

FlowLayout

Este lo que hace es ir colocando de arrriba a abajo de izquierda a derecha….

// FlowLayout1.java
import javax.swing.*;
import java.awt.*;
import net.juantxu.swing.*;

public class FlowLayout1 extends JApplet{
	public void init(){
		Container cn = getContentPane();
	cn.setLayout( new FlowLayout() );
	for(int i =0; i<20;i++){
		cn.add( new JButton("Boton "+ i) );
	}
		
	}	
	public static void main(String[] args){
		Console.run(new FlowLayout1(), 300, 300);
	}
}

GridLayout

Este lo que hace es crear una maya, una tabla con las celdas que tu le especificas y va colocando los componentes en ella. No ajusta. El hace la tabla con el total del contenido y va colocando en las celdas.

// GridLayout1.java
import javax.swing.*;
import java.awt.*;
import net.juantxu.swing.*;

public class GridLayout1 extends JApplet{
	public void init(){
		Container cn = getContentPane();
	cn.setLayout( new GridLayout(7,4) );
	for(int i =0; i<17;i++){
		cn.add( new JButton("Boton "+ i) );
	}
		
	}	
	public static void main(String[] args){
		Console.run(new GridLayout1(), 300, 300);
	}
}

GridBagLayout

GridBagLayout proporciona un control tremendo a la hora de decidir la disposición. Recalcula la disposición a la hora de redimensionar la ventana. Pero este, como que es el más potente es tambien el más complicado de usar y no lo veremos aqui.

Posicionamiento Absoluto

Totalmente Desaconsejable pero bueno… si quieres hacer las cosas mal … Primero estableces a nulo el layout.

Container: setLayout(null);

y despues invocas a SetBounds() o reshape() ( en funcion de la version de java ) por cada componenete que quieres establecer pasandole un rectángulo circundante con las coordenadas. Esto lo puedes hacer en el constructor o con paint()

BoxLayout

Debido a que la gente tiene tantas dificultades con el GridBagLayout se introdujo el BoxLayout que es mas sencilla y proporciona muchas de sus funcionalidades.

 
java/27.txt · Última modificación: 2008/05/13 10:00 (editor externo)
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki