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

�Podemos a�adir 22 objetos al panel Diver Data, usando el controlador BorderLayout?

Si, podemos a�adir 22 objetos (o m�s) al panel Diver Data usando el controlador BroderLayout a�adiendo paneles con sus propios controladores de distribuci�n a las regiones de BorderLayout. Entonces cada panel tiene objetos adicionales, haciendo posible crear numerosos objetos en este panel. Esta lecci�n describe este detalle.

.�Configurar el Panel Diver Data

El panel Diver Pane contiene etiquetas para se�alar la informaci�n que el usuario deber�a introducir en los campos de texto y en los check boxes. Adem�s, se incluye una imagen por prop�sitos est�ticos. Estos objetos est�n organizados para que los datos personales del buceador aparezcan en la parte superior del panel, la informaci�n de entrenamiento en la parte derecha, la imagen en el centro y en la izquierda, y la informaci�n de emergencia en la parte inferior. Adem�s de listar las variables y la informaci�n de objetos, el diagrama tambi�n revela un patr�n de distribuci�n.

La imag�n de arriba muestra cuatro �reas b�sicas que pueden convertirse f�cilmente en regiones de un BorderLayout. Como tenemos que a�adir m�s de cinco objetos, necesitamos crear paneles para contener esos objetos, y luego a�dimos esos paneles a las cuatro regiones. La distribuci�n de cada panel var�a, dependiendo de los requerimientos de los objetos a�adidos.

Al igual que el panel Welcome, el panel Diver Data empieza con un plan, la clase Diver. Usamos la clase contenedor Diver.java que creamos en la Parte 1. Esta clase deber�a usar ya la palabra clave extends para hacer este panel un JPanel a trav�s de la herencia.

Construir la clase Diver requiere los siguientes pasos:

  1. Declarar las variables necesarias para cada objeto label, text field, check box, e image.
    1. Seleccionar la distribuci�n y el color de fondo.
    2. Inicializar cada objeto declarado anteriormente,
    3. Llamar a los m�todos que crean cada panel.
    4. A�adir cada panel construido a las regiones BorderLayout del panel Diver.
  2. Definir los m�todos que construyen cada panel.
  3. Crear una clase que maneje los check boxes.

Como ya hemos listado las variables en un diagrama, podemos usar este listado para declarar las variables en la clase Diver.

Sigue estos pasos...
  1. Abre el fichero Diver.java en tu editor de texto.
  2. A�ade la siguiente lista de variables justo despu�s del corchete abierto de la declaraci�n de la clase:
         
    // Text fields for user input
         private JTextField name; 
         private JTextField street; 
         private JTextField city; 
         private JTextField statezip;  
     
         // Labels to go with each text field
         private JLabel lname;
         private JLabel lstreet;
         private JLabel lcity;
         private JLabel lstatezip;    
    
         // Check boxes for types of diver training
         private JCheckBox ow;
         private JCheckBox a;
         private JCheckBox res;
         private JCheckBox un;
         private JCheckBox w;
     
         // Text fields for Emergency box
         private JTextField nname;
         private JTextField phone;
         private JTextField rel;
         
         // Text fields for Emergency Contact
         private JLabel lnname;
         private JLabel lphone;
         private JLabel lrel;
         
         // Buttons and image
         private JButton enter; 
         private JButton edit; 
         private JLabel seahorse; 
     
         // Panels to be built and added
         // to the border layout of this
         // panel.
     
         private JPanel images;
         private JPanel jaddress;
         private JPanel emerg;
         private JPanel training;
         // Class to handle functionality of check boxes  
         ItemListener handler = new CheckBoxHandler();
         // ItemListener and CheckBoxHandler classes are 
         // explained later.
    
  3. Graba el fichero.

Observa que todas las variables son declaradas private. Esto protege los datos de ser manipulados desde fuera de las clases. Declarar los datos private y algunos m�todos public es una parte del concepto llamado encapsulaci�n.

.�Encapsulaci�n y Control de Acceso

En la parte 1 aprendimos un poco sobre Atributos de Acceso: private, public, y protected. El control de acceso juega un gran papel en la encapsulaci�n.

La encapsulaci�n se refire a c�mo ocultar y proteger los datos y m�todos dentro de un objeto de interfarencias exteriores y de un mal uso. Esta definici�n de clase es la fundaci�n de encapsulaci�n.

Las clases definen las instrucciones para el tipo de protecci�n de acceso de cada �tem de dato y m�todo que tienen, y qu� m�todos tienen acceso a qu� datos. Adem�s, las clases que trabajan juntas tienen ventaja para ocultar el funcionamiento de los m�todos y los objetos. En otras palabras, la encapsulaci�n nos ayuda a construir aplicaciones con objetos predefinidos y objetos que creamos nosotros mismos.

No necesitamos entender el mecanismo de las clases predefinidas que usamos de la misma forma que no necesitamos conocer el funcionamiento de la radio que tenemos instalada en nuestro coche. Una clase del API Java es un componente predefinido como una radio es un componente predefinido.

En el dise�o y escritura del c�digo para Dive Log, ya hemos tratado con la encapsulaci�n de dos formas:

  1. Implementaci�n Oculta:
    • Inicializar objetos de clases predefinidas
      consideremos el objeto JFrame. Inicializando o usando la palabra clave extends para crear un objeto JFrame, creamos un marco con botones para minimizar y maximizar, y un �rea que contiene otros objetos. Probablemente no tendremos conocimiento sobre como se construyen estos objetos. Los detalles de la construcci�n est�n ocultos para nosotros. Todo lo que hicimos fue crear un marco usando las palabras clave new o extends con JFrame, llamando al constructor necesariamente para construir un marco de la forma que queremos.
    • Llamando a los m�todos predefinidos.
      Cuando llamamos a setBackground y le pasamos la clase Color, no necesitamos saber c�mo rellena este m�todo el fondo de un campo. El m�todo setBackground no est� definido en una clase que nosotros creamos. En su lugar, setBackground viene de otra clase predefinida. Las instrucciones de este m�todo est�n ocultas para nosotros. S�lo podemos llamar al m�todo sobre el objeto al que queremos a�adirle un color de fondo, y el m�todo har� el trabajo por nosotros.
  2. Control de Acceso
    • Los m�todos predefinidos que hemos llamado hasta ahora han sido declarados public, d�ndonos acceso a ellos.
    • A los m�todos que definimos en las clases de Dive Log tambi�n se les di� el acceso public.
    • A las variables de datos que declaramos se les di� el acceso private para protegerlas.

Las pr�cticas de programaci�n seguras aconsejan el control de acceso private para las variables de datos. Para acceder a esos datos, definimos m�todos public para obtener (get) y seleccionar (set) los datos. Para evitar que los datos sean manipulados, los declaramos private y no proporcionamos m�todos de acceso a esos datos.

El m�todo setBackground es un ejemplo de un m�todo accesor que nos permite set el color de fondo de un objeto.

En la creacci�n de la clase Diver, llamamos a los m�todos predefinidos accesores, aprovech�ndonos de la encapsulaci�n. M�s adelante en este turorial, definiremos otros tipos de metodos de acceso, algunos de los cuales se declaran private para proteger los datos.

.�Definir el Constructor

Con las variables declaradas, podemos movernos dentro de la definici�n del constructor de la clase Diver. Aqu� est� como el constructor construye el panel Diver Data:

  • Selecciona el controlador BorderLayout
  • Selecciona un fondo blanco.
  • Inicializa los objetos del panel.
  • Llama a los m�todos para construir cuatro paneles.
  • A�ade los paneles al panel.

Recuerda que el constructor de la clase debe tener el mismo nombre que la clase, y no devuelve ning�n valor. Proporciona instrucciones sobre como se construye el objeto en su inicializaci�n, incluyendo otros objetos que necesitan ser inicializados. Adem�s, este constructor necesita el modificador de acceso public para que la clase DiveLog pueda inicializar esta clase cuando se llama al constructor de Diver.

Sigue estos pasos...
  1. Abre el fichero Diver.java en tu editor de texto.
  2. Empieza la definici�n del constructor de la clase y llama a los m�todos para seleccionar el controlador de distribuci�n y el color de fondo a blanco. Sit�a el siguiente c�digo inmediatamente despu�s de las declaracioens de variables:
    public Diver()
     { // Opens Constructor
       // Sets layout for Diver panel
       setLayout(new BorderLayout());
       // Sets background color
       setBackground(Color.white); 
       
       
     } // Closes Constructor
    
  3. Graba el fichero.

El siguiente paso es inicializar cada variable que hemos declarado anteriormente en la parte superior de la clase.

C�mo inicializar estos objetos depende del qu� tipo de constructor que llamemos. Recuerda que la palabra clave new indica al compilador que est�mos llamando al constructor de la clase que nombramos. La documentaci�n de cada clase define constructores por cada uno de esos objetos.

Construimos un objeto JTextField con el texto Enter Your Name y lo asignamos a la variable name. �Qu� l�nea de c�digo es la correcta?
 A  name = JTextField("Enter Your Name");
 B  name = new JTextField(Enter Your Name);
 C  Ninguna

COMPARTE ESTE ARTÍCULO

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