New 2 Java: Construir una Aplicación: 3.- Recibir Entradas de Usuario

�C�mo deber�amos construir los cuatro paneles a a�adir al panel Diver Data?

Podemos crear clases separadas e inicializarlos en el constructor de cada clase, o podemos definir m�todos para construir los paneles dentro de esta clase y llamar a estos m�todos desde dentro del constructor de la clase.

Para el panel Diver Data, definimos m�todos para construir los cuatro paneles. M�s adelante veremos como crear nuevas clases para varias secciones de un panel.

.�Terminaci�n del Constructor

Hicimos mucho trabajo dentro del constructor, pero no est� terminado todav�a. El plan del constructor era:

  1. Seleccionar la distribuci�n y el color de fondo.
  2. Inicializar cada objeto pr�viamente declarado.
  3. Llamar a los m�todos para crear cada panel.
  4. A�adir cada panel construido a las regiones del borderLayout del panel Diver.

Los pasos uno y dos est�n terminados. Ahora empezaremos el paso tres, llamar a los m�todos para crear cada panel.

Las convenciones de nombrado recomiendan que los nombres de m�todo empiecen con un verbo que describa lo que hace el m�todo. En este caso, los m�todos a los que est�mos llamando en el constructor crean paneles para contener objetos. Por eso tiene sentido empezar sus nombres con build. De echo, los nombres de m�todo pueden especificar qu� panel construye cada m�todo. Por ejemplo, buildImagePanel crea el panel que muestra la imagen de los caballitos de mar.

Para llamar a los m�todos dentro del constructor, simplemente los nombramos y proporcionamos par�ntesis vac�os (). Algunos m�todos requieren que vayan par�metros dentro de los par�ntesis, pero estos m�todos particulares no requieren que se les pase ninguna informaci�n adicional.

Sigue estos pasos...
  1. Abre el fichero Diver.java en tu editor de texto.
  2. A�ade las siguientes llamadas a m�todos en el constructor:
    // Calls method to build image panel, which 
    // is defined outside of the constructor.
    buildImagePanel();     
     
    // Calls method to build address panel, which 
    // is defined outside of the constructor.   
    buildAddressPanel();
     
    // Calls method to build emerg panel, which 
    // is defined outside of the constructor.
    buildEmergencyPanel();
     
    // Calls method to build training panel, which 
    // is defined outside of the constructor.
    buildTrainingPanel();
    
  3. Graba el fichero.

De arriba hacia abajo, el constructor crea cada objeto, llama a los m�todos que crean los paneles, y a�ade esos objetos a cada panel. El paso final es completar el constructor tray�ndo de nuevo el objeto panel Diver. A�adimos los paneles a las regiones del boderLayout del objeto Diver.

Como podr�as recordar de la adicci�n de objetos al panel Welcome, para a�adir los objetos paneles a las regiones de distribuci�n del panel Diver:

  • Llamamos al m�todo add.
  • Suministramos la siguiente lista de par�metros.
    • Nombre de la variable del objeto a a�adir.
    • Nombre de la clase de distribuci�n.
    • Constantes de posici�n.

Para obtener una lista de las variables panel que seleccionamos previamente, miramos en la parte superior de la clase, o en el diagrama preliminar que hicimos.

Sigue estos pasos...
  1. Abre el fichero Diver.java en tu editor de texto.
  2. A�ade los cuatro paneles:jaddress, images, training, emerg a las cuatro regiones del controlador de distribuci�n, de esta forma:
    add(jaddress, BorderLayout.NORTH);
    add(images, BorderLayout.CENTER);
    add(training, BorderLayout.EAST);
    add(emerg, BorderLayout.SOUTH);
    
  3. Graba el fichero.

Nuestro constructor se deber�a parecer a este ejemplo.

.�Ejemplares de Clases

Si compilamos la clase Diver en este momento, obtendremos errores. Aunque hemos llamado a los m�todos para construir los paneles, no los hemos definido. Con los cuatro pasos del constructor completados, nos vamos fuera del constructor para definir los m�todos necesarios para construir los paneles. Como hemos llamado a cuatro m�todos, debemos definir los siguientes cuatro m�todos:

  • buildImagePanel
  • buildAddressPanel
  • buildEmergencyPanel
  • buildTrainingPanel

Como la clase Diver extiende JPanel, es un panel y lo hemos configurado para usar el controlador de distribuci�n BorderLayout. Construyendo paneles con sus propios controladores de distribuci�n, podemos a�adir muchos m�s objetos al panel Diver Data, construido desde la clase Diver.

Aunque cada panel no se crea en su propia clase sino en su propio m�todo, no podemos usar la herencia a trav�s de la palabra clave extends. Sin embargo, podemos crear un objeto panel creando un ejemplar de la clase JPanel. Una vez que tengamos un objeto panel, seleccionamos su distribuci�n, y los objetos que queramos.

Primero empezamos la definici�n del m�todo con un atributo de acceso, el tipo de m�todo, y el nombre del m�todo, seguido por los par�ntesis vac�os:

private void buildImagePanel()

C�mo s�lo est� clase ncesita acceder a este m�todo, podemos declararlo como private. El tipo del m�todo es void porque no devuelve ning�n valor. En vez de eso, simplemente construye unos cuantos objetos GUI. Usando las convenciones de nombrado para el lenguaje de programaci�n Java, este m�todo se llama buildImagePanel para describir claramente lo que hace el m�todo. Esto nos ayuda a nosotros, as� como a otros desarrolladores, mirando al c�digo podemos entender lo que hace con s�lo un vistazo.

Al principio de esta clase declaramos una variable llamada images del tipo JPanel. Ahora asignamos esta variable a un ejemplar de la clase JPanel usando la palabra clave new para crear un nuevo objeto JPanel:

images = new JPanel();

Como hemos creado un ejemplar de la clase JPanel, tenemos acceso a los m�todos que JPanel hereda, incluyendo el m�todo setLayout de la clase Container y el m�todo setBackground de la clase Component. Seleccionamos el color de fondo y la distribuci�n de este ejemplar del objeto JPanel.

C�mo s�lo se a�ade una imagen a este panel, un simple controlador de distribuci�n como FlowLayout es suficiente. Seleccionamos esta distribuci�n de forma similar a como lo hicimos en los paneles Welcome y Diver llamando al m�todo setLayout, pero esta vez tambi�n nombramos el objeto que necesita el controlador de distribuci�n usando el operador punto. Luego inicializamos la clase apropiada para la distribuci�n que queremos en la lista de par�metros del m�todo:

images.setLayout(new FlowLayout);

Hemos creado un objeto panel que usa un ejemplar de la clase FlowLayout como controlador de distribuci�n. Luego, seleccionamos el color de fondo como lo hicimos en el otro panel, pero est� vez debemos nombrar el objeto panel y el operador punto:

images.setBackground(Color.white);

El color de fondo del panel images ahora es blanco.

�Por qu� no hemos creado un ejemplar de la clase Color usando la palabra clave new en el m�todo setBackground como lo hicimos en el m�todo setLayout?
 A  La clase Color no es una clase real.
 B  La clase Color proporciona campos static
 C  Ninguna de las dos

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP