Swing y JFC (Java Foundation Classes)

Aunque es posible hacerlo sin un controlador de disposici�n, se deber�a utilizar un controlador disposici�n siempre que sea posible. Los controladores de disposici�n hacen m�s sencillo el redimensionado de un contenedor y se ajustan al 'Aspecto y Comportamiendo' dependientes de la plataforma y los diferentes tama�os de las fuentes. Tambi�n pueden ser reutilizados f�cilmente por otros contenedores y otros programas.

Si un contenedor personalizado no ser� reutilizado ni redimensionado, y controla normalmente los factores dependientes del sistema como el tama�o de las fuentes y la apariencia de los componentes (implementando sus propios controles si fuera necesario), entonces, el posicionamiento absoluto podr�a tener sentido.

Los Desktop panes, que contienen frames internos, est�n en esta categor�a. El tama�o y posici�n de los frames internos no depende directamente de los tama�o del desktop pane. El programador determina el tama�o y situaci�n iniciales del frame interno dentro del desktop pane, y luego el usuario puede mover o redimensionar los marcos. En esta situaci�n un controladores de distribuci�n es innecesario.

Otra situaci�n en que el posicionamiento absoluto podr�a tener sentido es un contenedor personalizado que realice c�lculos de tama�o y posici�n que son particulares del contenedor y que quiz�s requieran un conocimiento especializado del estado del contenedor. Esta es la situaci�n de los split panes.

Aqu� tenemos un applet que muestra una ventana cuyo panel de contenido usa posicionamiento absoluto

Esta es una imagen del GUI del Applet. Para ejecutarlo pulsa sobre ella y el applet aparecer� en una nueva ventana del navegador.

Abajo podemos ver las declaraciones de las variables y la implementaci�n del constructor de la clase window. Aqu� puedes ver el programa completo. El programa se puede ejecutar como un applet, con la ayuda de AppletButton, o como una aplicaci�n.

public class NoneWindow extends JFrame {
    . . .
    private boolean laidOut = false;
    private JButton b1, b2, b3;

    public NoneWindow() {
        Container contentPane = getContentPane();
        contentPane.setLayout(null);

        b1 = new JButton("one");
        contentPane.add(b1);
        b2 = new JButton("two");
        contentPane.add(b2);
        b3 = new JButton("three");
        contentPane.add(b3);

        Insets insets = contentPane.getInsets();
        b1.setBounds(25 + insets.left, 5 + insets.top, 75, 20);
        b2.setBounds(55 + insets.left, 35 + insets.top, 75, 20);
        b3.setBounds(150 + insets.left, 15 + insets.top, 75, 30);
        . . .
    }
    . . .
}

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR