Our Country Sites: Argentina|Brazil|Chile|Mexico|Peru

Desarrollo Apps Blackberry (3) - Vertical Field Manager

Versão para impressãoVersão para impressãoSend by emailSend by email

Las aplicaciones JDE de Blackberry JDE presentan clases que abstraen la notación de pantallas que se muestran en nuestros equipos móviles.
La base de esta abstracción es la clase Screen (equivalente a la clase Canvas de J2ME) a cual nos da un "lienzo" para que podamos trabajar y colocar los campos necesarios para armar nuestras interfaces. La clase base Screen tiene sus clases heredadas, como FullScreen y MainScreen (que es con la que trabajaremos en este ejemplo para efectos de enseñanza).
Una vez que tenemos listo nuestro "lienzo", Blackberry JDE nos da clases para que podamos ordenar y acomodar nuestro contenido en la pantalla: estos son los LAYOUT MANAGERS.

ACERCA DEL VERTICAL FIELD MANAGER
Este tipo de layout manager coloca las clases tipo Field, de arriba/abajo (Vertical).
Puedes controlar el ancho y el alineamiento de los componentes que has agregado a este layout manager.

import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
   
public class VerticalFieldManagerExample extends UiApplication {
   public static void main(String[] args) {
     VerticalFieldManagerExample theApp = new VerticalFieldManagerExample();
     UiApplication.getUiApplication().pushScreen(new VerticalFieldScreen());
     theApp.enterEventDispatcher();
   }
}
   
class VerticalFieldScreen extends MainScreen {

   public VerticalFieldScreen(){
   // Creamos el Vertical manager e indicamos que se active el  
   // Scrolling cuando se agreguen muchos campos.
   VerticalFieldManager vfm = new VerticalFieldManager(Manager.VERTICAL_SCROLL);
   
   // Agregamos un Label
   vfm.add(new LabelField("VerticalFieldManager..."));
   
   // Agregamos otro Label
   vfm.add(new LabelField("Alineamiento por defecto es hacia la derecha"));
   
   // Agregamos otro Label que tenga el ancho completo
   // de la pantalla
   vfm.add(new LabelField("Usando toda la longitud de la pantalla",
           LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH));
   
   // Agregamos otro Label que este centrado horizontalmente
   vfm.add(new LabelField("Centrado Horizontalmente",Field.FIELD_HCENTER));
   
   // Agregamos el VerticalFieldManager a la pantalla
   add(vfm);
   }
}
 

1. La clase "VerticalFieldManagerExample" contiene el metodo principal que inicia este aplicativo.
2. En el constructor de VerticalFieldManagerScreen, una instancia del VerticalFieldManager es creada especificando un parametro que indica que se accione el scroll vertical si se agregan muchos componentes (y no quepen en la pantalla).
3. Una variedad de Labels se agregaron al Vertical Field Manager. Una variedad de diferentes estilos se pasaron a los constructores de estos campos para determinar la manera como se mostrarian en pantalla.
4. Es importante tomar en cuenta que si un campo que no esta en una zona visible de la pantalla, este tiene que ser creado con el estilo de poder tener foco (FOCUSABLE) para que funcione el scrolling.
5. Finalmente el Vertical Field Manager es agregado (add) a la pantalla. No olvidar de hacer este paso, caso contrario no se mostrará ningun resultado en pantalla.

SOBRE SCROLLING Y FOCUS
Cuando agregan varios campos al UI, debemos tener en cuenta algo muy imporante: el Vertical Field Manager se encargara del scroll vertical, solo si estos campos tienen definido el estilo FOCUSABLE activado y estan en una posición no visible de la pantalla (la que alberga al Vertical Field Manager). Si estos campos no tienen este estilo activado entonces el Vertical Field Manager no permitirá el scroll sobre estos.
Entonces cuando deseen agregar varios objectos de la clase RichTextField al Vertical Field Manager, deben recordar de activarles el estilo FOCUSABLE.
Aqui les va un ejemplo: new RichTextField(“Label”, RichTextField.FOCUSABLE | LabelField.ELLIPSIS).

Espero sus comentarios.

Gerardo Chung
Desarrollo Blackberry Senior
Nextel del Peru S.A.