Swing y JFC (Java Foundation Classes)

Aqui hay un applet que muestra un CardLayout en acci�n.

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

Como muestra el applet anterior, la clase CardLayout nos ayuda a manejar dos o m�s componentes, (normalmente ejemplares de JPanel) que comparte el mismo espacio. Otra forma de conseguir lo mismo es usar un JTabbedPane.

Conceptualmente, cada componente tiene un CardLayout que lo maneja como si jugaran a cartas o las colocaran en una pila, donde s�lo es visible la carta superior. Se puede elegir la carta que se est� mostrando de alguna de las siguientes formas.

  • Pidiendo la primera o la �ltima carta, en el orden en el que fueron a�adidas al contenedor.
  • Saltando a trav�s de la baraja hacia delante o hacia atr�s,
  • Especificando la carta con un nombre especifico. Este es el esquema que utiliza el programa de ejemplo. Especificamente, el usuario puede elegir una carta (componente) eligiendo su nombre en una lista desplegable.

Abajo tenemos el c�digo que crea el CardLayout y los componentes que maneja. (Aqu� est� el programa completo. El programa corre como un applet, con la ayuda de AppletButton, o como una aplicaci�n.)

//Where instance variables are declared:
JPanel cards;
final static String BUTTONPANEL = "JPanel with JButtons";
final static String TEXTPANEL = "JPanel with JTextField";

//Where the container is initialized:
cards = new JPanel();
cards.setLayout(new CardLayout());
   
...//Create a Panel named p1. Put buttons in it.
...//Create a Panel named p2. Put a text field in it.

cards.add(BUTTONPANEL, p1);
cards.add(TEXTPANEL, p2);

Cuando se a�aden componentes a un controlador que utiliza un CardLayout, se debe utilizar la forma de dos argumentos del m�todo add() de Container : add(String name, Component comp). El primer argumento puede ser una cadena con algo que identifique al componente que se est� a�adiendo.

Para elegir el componente mostrado por el CardLayout, se necesita alg�n c�digo adicional.

Aqu� puedes ver c�mo lo hace el applet de esta p�gina.

//Where the container is initialized:
. . .
    //Put the JComboBox in a JPanel to get a nicer look.
    String comboBoxItems[] = { BUTTONPANEL, TEXTPANEL };
    JPanel cp = new JPanel();
    JComboBox c = new JComboBox(comboBoxItems);
    c.setEditable(false);
    c.addItemListener(this);
    cp.add(c);
    contentPane.add(cp, BorderLayout.NORTH);
. . .

public void itemStateChanged(ItemEvent evt) {
    CardLayout cl = (CardLayout)(cards.getLayout());
    cl.show(cards, (String)evt.getItem());
}

Como se muestra en el c�digo anterior, se puede utilizar el m�todo show() de CardLayout para seleccionar el componente que se est� mostrando. El primer argumento del m�todo show() es el contenedor que controla CardLayout -- esto es, el contenedor de los componentes que maneja CardLayout. El segundo argumento es la cadena que identifica el componente a mostrar. Esta cadena es la misma que fue utilizada para a�adir el componente al contenedor.

Abajo tienes todos los m�todos de CardLayout que permiten seleccionar un componente. Para cada m�todo, el primer argumento es el contenedor del que CardLayout es el controlador de disposici�n (el contenedor de las cartas que controla CardLayout).

public void first(Container parent)
public void next(Container parent)
public void previous(Container parent)
public void last(Container parent)
public void show(Container parent, String name)

.�Ejemplos que usan CardLayout

S�lo hay un ejemplo en esta lecci�n que use CardLayout. CardWindow.java. Generalmente nuestros ejemplos usan tabbed panes en lugar de CardLayout, ya que los tabbed panes porporcionan un GUI m�s atractivo con la misma funcionalidad.

COMPARTE ESTE ARTÍCULO

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