New 2 Java: Construir una Aplicación: 1.- Objetos de una Aplicación

�Qu� constuctor est� escrito incorrectamente?

Ambos public Button(){} y public Button("Edit"){} son correctos. Los constructores pueden escribirse con par�ntesis vac�os (), o pueden requerir par�metros, como en el caso B, un constructor Button que toma un par�metro String. De hecho, una clase puede tener varios constructores, lo que se conoce como constructores sobrecargados.

.�Detalles de Constructores

Muchas clases de la librer�a Java tienen un constructor. Para crear un objeto de esas clases en nuestras propias clases, para la mayor�a de ellas, llamamos al constructor de la clase.

Por ejemplo, si queremos crear un boton para nuestra aplicaci�n, la librer�a Java tiene una clase predefinida Button que podemos usar. Un vistazo a la documentaci�n de Button nos muestra que esta clase tiene dos posibles constructores a los que podemos llamar:

  • Button()
    Crea un bot�n sin etiqueta
  • Button(String label)
    Crea un bot�n con una etiqueta de texto

Tener m�s de un constructor es lo que conocemos como constructores sobrecargados. Cada constructor debe tener el mismo nombre de la clase que define, pero puede haber tantos constructores como sean necesarios. La diferencia est� en la lista de par�metros definida entre los par�ntesis (). El compilador sabe a qu� constructor estamos llamando simplemente por el tipo de informaci�n que le proporcionamos.

En este caso, si proporcionamos un String como par�metro llamando al constructor como en Button("Edit"), el compilador sabe que est�mos llamando al segundo constructor.

Un constructor puede requerir diferentes tipos en la lista de par�metros, pero debemos ponerlos en el orden en que queramos que sean a�adidos.

Por ejemplo:

Customer(String name, String address, int age) 

Ejemplariza un objeto Customer llamando al constructor de la clase Customer con la palabra clave new:

Customer cust1 = new Customer("Jane Smith", "555 Street", 30);

Customer define la variable referencia, y la variable se llama cust1. Un Customer se construye llamando al constructor de la clase Customer con la palabra clave new.

En otras palabras, el constructor construye un objeto exactamente en la forma que queremos. En este caso, crea un objeto Customer con informaci�n personal.

Antes de arrancar una aplicaci�n, deben aparecer ciertos componentes GUI para que el usuario pueda utilizar la aplicaci�n. Este concepto podr�a parecer que dice que toda la aplicaci�n debe escribirse dentro del constructor, pero no es as�.

El constructor de DiveLog define s�lo unos pocos componentes GUI, y puede que algunas de estas definiciones de clases llamen a otras clases. De otro modo, la clase principal, se convertir�a en algo enorme e inmanejable. Tambi�n, en la programaci�n orientada a objetos, el objetivo es construir objetos que trabajen con otros objetos para hacer sencillo el a�adir o eliminar componentes sin tener que modificar cantidad de c�digo.

Cuando se escriben constructores, s�lo debemos incluir los elementos del objeto que necesitan ser inicializados.

Veremos estos conceptos seg�n vayamos trabajando en la construcci�n de esta aplicaci�n Dive Log.

La imagen de abajo nos ense�a los objetos que se crean dentro del constructor DiveLog:


Objetos creados desde el constructor DiveLog

El constructor de la clase DiveLog empieza as�:

public DiveLog()
  { // Opens constructor

   // Creates a frame object to add to 
   // the application GUI components.

   dlframe = new JFrame("A Java(TM) Technology Dive Log");

Observa que este constructor tiene el mismo nombre que la propia clase y que no requiere ning�n par�metro, como muestra (). El corchete abierto { inicia el cuerpo del constructor.

Recordamos que al principio de DiveLog.java, declaramos la variable dlframe, pero no le asignamos ning�n valor. Ahora, dentro del constructor, el constructor de JFrame es asignado a la variable dlframe. Un JFrame es simplemente una clase predefinida de Java que construye un marco con un borde, un bot�n de minimizar y maximizar y una caja de cierre. Un JFrame es un contenedor Swing que puede contener otros contenedores o componentes DiveLog inicializa un JFrame de esta forma:

   dlframe = new JFrame("A Java(TM) Technology Dive Log");

Si leemos la documentaci�n de la clase JFrame debajo del sumario de constructores, descubriremos que hay varios constructores disponiles para construir un objeto JFrame:

  • El primero es el constructor por defecto, que crea un JFrame invisible y que no tiene otras caracter�sticas.
  • El segundo constructor crea un JFrame en la GraphicsConfiguration espec�fica de un dispositivo de pantalla y un t�tulo en blanco.
  • El tercer constructor acepta un String como argumento, y crea un JFrame con el t�tulo proporcionado. Este es el constructor usado en el constructor de DiveLog.
  • El �ltimo constructor crea un JFrame con el t�tulo y la GraphicsConfiguration del dispositivo de pantalla especificados.

Aunque un objeto JFrame es inicializado con el t�tulo para el marco y asignado a la variable dlframe, todav�a necesita un poco m�s de trabajo.

El siguiente fragmento de c�digo contiene algunos conceptos avanzados que explicaremos completamente m�s adelante. Este m�todo se asegura que la aplicaci�n Dive Log se puede apagar de la forma apropiada.

// Closes from title bar
// and from menu
dlframe.addWindowListener(new WindowAdapter() 
  {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
 });
Sigue estos pasos...
  1. Abre el fichero DiveLog.java.
  2. Teclea, o copia y pega las siguientes l�neas de c�digo:
    public DiveLog()
    {
    
    // Create a frame object to add the 
    // application GUI components to.
    
      dlframe = new JFrame("A Java(TM) Technology Dive Log");
      
      // Closes from title bar
      //and from menu
      dlframe.addWindowListener(new WindowAdapter() 
      {
        public void windowClosing(WindowEvent e)
        {
     System.exit(0);
         }
       });
       
      
    }// Ends constructor
    
  3. Graba el fichero.

Luego, se ejemplariza el JTabbedPane. Al inicio de la clase DiveLog, declaramos la variable tabbedPane como del tipo JTabbedPane, pero no fue asignada. Aqu�, en el construtor se usa la palabra clave new para crear un objeto JTabbedPane, pas�ndole los par�metros necesarios para la posici�n de los tabs en el lado izquierdo de la ventana, y la variable es asignada al objeto JTabbedPane:

// Tabbed pane with panels for components
   
tabbedPane = new JTabbedPane(SwingConstants.LEFT);

JTabbedPane es otra clase Java que crea tabs (pesta�as) en una aplicaci�n y que posee dos constructores. El constructor de DiveLog llama al constructor de la clase JTabbedPane que hace posible crear los tabs en TOP, BOTTOM, LEFT, o RIGHT. Simplemente tecleando nuestras preferencias cuando llamemos al constructor. En el caso de DiveLog, los tabs se crean a la izquierda de la pantalla. Puedes situarlos en otro lado si te apatece.

.�Llamar a M�todos Predefinidos

JFrame hereda los m�todos predefinidos de las clases Frame, Window, Container, Component, y Object. Aprenderemos sobre la herencia m�s adelante.

Recuerda que los m�todos proporcionan acciones en las aplicaciones. Una clase tiene al menos un m�todo, pero generalmente tiene muchos m�s. Puedes ver los m�todos que tiene disponibles la clase JFrame leyendo la documentaci�n de la clase JFrame y escaneando los m�todos listados en las clases heredadas. Pulsa sobre los nombres de los m�todos para encontrar la informaci�n que necesitas proprocionar cuando se les llama.

Los m�todos, como los constructores, frecuentemente necesitan que les pasemos informaci�n a trav�s de una lista de par�metros.

Llamamos a estos m�todos predefinidos simplemente usando el operador punto (.) con el nombre de la variable objeto, de esta forma:

tabbedPane.setBackground(Color.blue);
tabbedPane.setForeground(Color.white);

Los m�todos setBackground y setForeground son llamados y usados sobre el objeto tabbedPane, para seleccionar los colores de fondo y de primer plano. Podemos usar estos m�todos sobre cualquier componente GUI para cambiar sus colores, simplemente llam�ndolos a trav�s de su variable, y pas�ndoles la clase Color como un par�metro, junto con el color que queremos usar.

Sigue estos pasos...
  1. Abre el fichero DiveLog.java
  2. Teclea o copia y pega las siguientes l�neas de c�digo justo despu�s de la �ltima secci�n que has a�adido:
    // Tabbed pane with panels for Jcomponents
    // Instantiate JTabbedPane with keyword new  
    tabbedPane =  new JTabbedPane(SwingConstants.LEFT);
    // Calls method to set color
    tabbedPane.setBackground(Color.blue);
    tabbedPane.setForeground(Color.white);
    
  3. Graba el fichero.

Los m�todos predefinidos son f�ciles de usar. Cuando decidamos que queremos crear un objeto de cierta clase, miramos la documentaci�n de la clase y vemos los m�todos que tiene disponibles. Creamos un ejemplar de la clase usando el operador new y asignando una variable, luego llamamos al m�todo usando el operador punto como se explica arriba. Veremos m�s ejemplos de esto seg�n vayamos progresando en la aplicaci�n Dive Log.

En este punto, se ha llamado al constructor de la clase JTabbedPane y se ha ejemplarizado el objeto, pero no se han a�adido los tabs individuales.

�C�mo se a�aden los tabs individuales al JTabbedPane?
   A. Asignando una variable y usando la palabra clave new

   B.  Llamando a un m�todo especial de la clase JTabbedPane

   C.  Ninguna es correcta.

COMPARTE ESTE ARTÍCULO

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