martes, 25 de enero de 2011

Dos nuevos componentes!

Bueno, siguiendo con el desarrollo de JPComponents, he creado dos nuevos componentes, ambos realizan la misma funcionalidad, es una especie de suggest, que a medida que el usuario va tipeando caracteres los componentes van sugiriendo palabras que están guardadas en el diccionario. Es un inicio, la idea es que varios componentes que permiten ingresar texto tengan esta funcionalidad.

Comenzaremos hablando del diccionario:

La clase  com.jpcomponents.base.SuggestBase sirve de diccionario para los componentes que implementan la funcionalidad suggest.

Básicamente guarda los strings dentro de listas, clasificadas por la primera letra del string, es como un diccionario común y corriente, donde la clave es la primera letra del string.

Por ahora no es necesario saber qué hace exactamente, ya que nos centraremos en los componentes JPSuggestComboBox y JPSuggestTextField.


Los Componentes:

Ambos componentes tienen las siguientes propiedades, accesibles mediante getters y setters:
  • minLengthToSearch: es el tamaño mínimo del string que se ingresa para comenzar a sugerir resultados
  • maxSuggestLength: es el máximo de resultados que muestra el suggest, ignorando el resto de los resultados, aunque coincidan con el patrón, esto es útil cuando existen muchos resultados para un patrón determinado.
  • suggestBase: obtiene o setea el diccionario sobre el cual el componente busca resultados
Metodos:
Estos componentes tienen los siguientes métodos:
  • void addString(String value):  Agrega un string al diccionario
  • void addString(List<String> values): Agrega la coleccion al diccionario


Eventos:
Ambos componentes lanzan dos eventos, uno es lanzado cuando el diccionario no contiene la clave que se está buscando, esto es útil por ejemplo cuando se traen los datos desde la base de datos, si no existe la clave, entonces podemos ir a buscar los resultados a la base de datos y agregarlos al diccionario con los métodos que ya hemos hablado.
El otro es lanzado cuando, a pesar de existir la clave que coincide con el patrón, no se han encontrado resultados que coincidan con el patrón, por ejemplo, tipeamos "jpcomponents", el diccionario contiene la clave "j", pero no contiene el valor "jpcomponents".


Como Usarlos?

Daré un ejemplo con el JPSugestComboBox:
Para instanciarlos, simplemente basta con la siguiente sentencia:


JPSuggestComboBox jpsugg= new JPSuggestComboBox();


si queremos agregar datos al suggest, suponemos que tenemos una lista de strings llamada datos, que queremos agregar al diccionario


jpsugg.addString(datos);


para escuchar los eventos
  jpsugg.addSuggestListener(new ISuggestListener() {

            public void onNotKeyIsFind(String key) {
                  //hacer algo si no se encontró la clave
            }

            public void onNotDataIsFind(String query) {
                //hacer algo si no se encontraron resultados
           }
});


Descargas:
Puedes descargar la nueva versión desde aquí

Bueno es un poco básico el tuto, así que les recomiendo que los prueben, y me comenten!

Saludos

lunes, 24 de enero de 2011

Cambios en JPCalendar

Bueno, ayer contaba cómo usar JPCalendar , hoy he agregado algunas características nuevas:

Nuevas Propiedades:
Además de las mencionadas en el post anterior se han agregado las siguientes propiedades, accesibles mediante getters y setters:
  • multipleSelectionAllowed: indica si se pueden seleccionar más de una fecha en el calendario.
  • canNull: indica si el calendario puede no seleccionar ninguna fecha, esto quiere decir, contener la fecha actual nula.
  • selectedDates: obtiene o establece las fechas seleccionadas en el calendario

Cambios En Listeners y Eventos:
He cambiado el evento que lanza el calendario al seleccionarse una fecha o cambiar la selección, ahora existe un  JPCalendarEvent que contiene la información necesaria sobre el evento, a saber:
  • type: es el tipo de evento com.jpcomponents.events.JPCalendarEventType, que puede ser SELECT o REMOVE.
  • calendar: es la fecha sobre la que se provocó el evento
Estas propiedades son accesibles mediante getters y setters.

Puedes descargar la nueva versión de aquí

sábado, 22 de enero de 2011

JPBackgroundPanel

JPBackgroundPanel es un JPanel con una imágen de fondo. Tan simple como eso, pero swing no tiene un componente de estas características, por lo cual he decidido crear uno.
Su uso es súper fácil, funciona como un JPanel normal, añadiendo las siguientes propiedades accesibles mediante getters y setters:
  • image: la imágen de fondo del panel, es una java.awt.Image
  • xLocation: la ubicación en x de la imagen
  • yLocation: la ubicación en y de la imagen
  • strech: indica si la imágen debe estirarse o reducirse para ocupar todo el tamaño del panel
Eso es todo, cualquier consulta, adelante.

Cómo usar JPCalendar

Atención: luego de leer este post, por favor lee este otro

Bueno, aquí dejo un tuto de cómo usar JPCalendar.
No hay mucho que explicar sobre qué es JPCalendar, ya que su nombre sugiere bastante, es un componente calendario para java/swing.
Lo primero que debes hacer para utilizar el calendario es bajarte la librería jpcomponents desde aquí, daré una explicación basándome en que estás familiarizado con swing y que utilizas Netbeans para el desarrollo. Si no es así con gusto daré las explicaciones que necesites.
Bueno, comencemos:

Primeros pasos:

1. Lo primero que debemos hacer  es crear una nueva aplicación java, y luego agregar jpcomponents a las librerías del proyecto.

2. Agregamos un nuevo JFrame a nuestra aplicación.

3. Agregaremos el calendario a nuestra barra de componentes para que sea más fácil agregarlo a nuestros formularios desde el editor de netbeans, para ello hacemos click con el botón secundario del mouse sobre la barra de componentes, damos click en palette manager y seleccionamos add from jar, vamos a la dirección donde está el jar de jpcomponents y seleccionamos jpcalendar de la lista que nos muestra el netbeans. Con eso ya debemos tener el calendario en la barra de componentes.

4. Arrastramos el componente jpcalendar sobre el jframe y listo, ya tenemos nuestro calendario funcionando.

Puedes hacer click con el botón secundario sobre  el formulario y seleccionar run file, y podrás ver el calendario en funcionamiento.

Propiedades de JPCalendar
 El calendario tiene unas cuantas propiedades que se pueden setear para personalizarlo, como los colores de fuente, de fondo, etc, aún no están todas funcionales, porque por trabajo he tenido que postergar algunas.
Aquí una lista de las propiedades implementadas, todas son accesibles mediante getters y setters:
  •  currentDate: esta propiedad establece u obtiene la fecha actual del calendario
  • dayColor: color de fuente de los días
  • daySelectedBackground: color de fondo del día seleccionado en el calendario
  • daySelectedColor: color de fuente del día seleccionado en el calendario
  • offsetDayColor: color de fuente de los días que no son del mes actual
  • rowBackgroundOdd: color de fondo para las filas impares del calendario
  • rowBackgroundPair: color de fondo para las filas pares del calendario
  • sundayBackground (aún no implementado): será el color de fondo de las celdas correspondientes al día domingo
  • sundayColor (aún no implementado): será el color de fuente de las celdas correspondientes al día domingo.
  • todayBackground: color de fondo del día actual
  • todayColor: color de fuente del día actual 

Eventos de JPCalendar
JPCalendar tiene un evento que es lanzado cuando cambia la fecha seleccionada, llamado onDateChanged(Calendar date), para escuchar este evento debe agregarse un com.jpcomponents.events.IJPCalendarDateListener a la instancia de calendario que quiere escucharse, de la siguiente manera:

Supongamos que tenemos una instancia de JPCalendar llamada jpcal, entonces, para escuchar el evento hacemos lo siguiente:

jpcal.addDateChangeListener(new IJPCalendarDateListener() {
            public void onDateChanged(Calendar calendar) {
               
//hacer algo con la fecha

            }
});


Capturas de Pantalla

JPCalendar sobre un JPBackgroundPanel


Bueno, esto es todo por ahora, si tienes dudas, no dudes en ponerte en contacto conmigo.

Descargar JPComonents desde Google Code

 

Atención: luego de leer este post, por favor lee este otro

Inicio de JPComponents

Bienvenidos!
Esta es la primera publicación, esperemos que sea la primera de muchas, aquí iré mostrando el avance de mi proyecto jpcomponents, una librería de componentes ricos para Java/Swing, por ahora he comenzado con un calendario, creo que todos los que programamos en java, alguna vez nos vimos en la necesidad de colocar un calendario y no encontramos ninguno que se adaptara a nuestras necesidades.
Existen otras alternativas, como por ejemplo jcalendar, pero la verdad a mí me ha parecido un tanto decepcionante.
Este es un proyecto abierto, y todos puede aportar ideas, he iniciado el proyecto en google code, pueden ir viendo su progreso, que espero sea rápido.
El calendario ya se puede descargar desde aquí.
Pronto les tendré novedades, y publicaré un minitutorial de cómo usarlo.