miércoles, 31 de octubre de 2012

JDecimalTextField: Componente para validar decimales en Java

En uno de mis últimos proyectos necesitaba validar la entrada de datos de los usuarios, el sistema necesitaba un módulo en el cual  se requiere que se introduzcan sólo números decimales. Para ello tenía las siguientes opciones:
  • Usar un JTextField común y corriente, y programar la validación de la entrada de datos sobre él.
  • Usar JFormattedTextField y habilitarlo para que solo admita números decimales.
  • Programar un componente que tenga la funcionalidad requerida.
  • Usar el poderoso Desarrollo de Software Basado en Componentes, es decir usar un componente implementado y probado por un tercero y así ahorrarme tiempo, esfuerzo, recursos, etc.
Me decanté por la última opción y así que buscando un control visual que satisfaga mis necesidades me encontré con JDecimalTextField, el cual no es más que un componente que hereda de JTextField, es decir es una caja de texto que solo acepta números decimales y que además cuenta con las siguientes propiedades adicionales a las ya tradicionales de un JTextField:

martes, 30 de octubre de 2012

JIntegerTextField: componente para validar enteros en Java

En todo sistema informático es fundamental la validación de los datos que ingresa el usuario, mientras más se valide la entrada de datos minimizaremos los errores que pueden suceder y/o nuestra aplicación tendrá menor probabilidad de fallar al guardar datos del usuario; esta vez les presento un control visual Java Swing, el JIntegerTextField, que no es más que una caja de texto que valida el ingreso solamente de números enteros positivos en su contenido; sé que existe el componente JFormattedTextField disponible desde la versión 1.4 de Java, pero la ventaja de este componente es que bloquea el ingreso de los datos inválidos, es decir al presionar una letra o un símbolo que no sea un número el control lo omite y no lo incluye en su contenido, así sea con la función Ctrl + V (pegar texto), este control analiza el texto y lo excluye, ya que al ser un componente heredado podemos sobrescribir las funciones de su clase base (el JTextField).

Las propiedades que añade este componente a los ya heredados de JTextField son los siguientes:
  • maxValue: valor máximo del entero.
  • minValue: valor mínimo del entero.
  • maxLength: máximo número de dígitos del entero.
Al final del post incluyo una liga para descargar un demo a modo de ejemplo para el uso del JIntegerTextField, la interfaz visual de dicha aplicación es la que se ve al principio de este artículo, que no es más que un pequeño programa que tiene dos entradas para datos que sean solo enteros. En la aplicación de ejemplo existe una subcarpeta llamada lib donde incluyo la librería JIntegerTextField comprimida y ya lista para ser usada en un archivo llamado JIntegerTextField.jar (ya que en la página de los autores está directamente el archivo .java ), el código fuente del componente es de código abierto y con licencia GPL, cortesía de los amigos de coplec.org desde donde pueden conseguir dichas fuentes.

RECUERDEN que para usar con mayor comodidad el control deben adicionarlo a la paleta de Netbeans o de su IDE favorito (si no sabes cómo, date una vuelta por "cómo adicionar un componente a la paleta de Netbeans"), para simplemente arrastrar y soltar el control sobre los formularios donde queramos usarlo, si tienen algún problema de direccionamiento de referencia a la librería, ayúdense del editor que estén usando, en el caso de Netbeans basta con hacer click derecho sobre el Proyecto y del sub-menú que se despliega seleccionar la opción "Resolve Reference Problems...", acto seguido presionar sobre el botón "Resolve..." el cual abrirá una ventana en la cual se debe ubicar el archivo de la librería JIntegerTextField.jar en la ubicación del disco duro donde lo tengamos.

Demo: Descargar/Download

domingo, 14 de octubre de 2012

Cómo agregar un componente a la paleta de Netbeans

Como sabemos el IDE Netbeans nos ofrece una gran cantidad de controles visuales en su paleta de componentes (tales como los Swing Controls o los AWT entre otros), que nos facilita a la hora de diseñar una interfaz gráfica de usuario, con solo arrastrar y soltar. Pero también existen muchos otros componentes fuera de los que ya trae pre-instalado éste IDE, que nos pueden ser de mucha utilidad a la hora de programar algún proyecto.

En el siguiente video se nos enseña cómo agregar/adicionar/añadir/instalar un JavaBean, componente o control visual de Java a la paleta de Netbeans.


En resumen una vez que tenemos nuestro componente Swing creado u obtenido de un tercero, lo añadimos a la paleta de Netbeans (esto se hace solo una vez) y luego podemos utilizarlo en cualquier proyecto.

miércoles, 10 de octubre de 2012

Cómo quitar la selección a un grupo de JRadioButtons en Java

Hace un tiempo en uno de mis proyectos, me vi en la necesidad de resetear, limpiar, borrar o quitar el valor de selección de los llamados botones de radio (JRadioButton en Java). En dicho proyecto tenía un formulario en el cual tenía diferentes controles o componentes (cajas de texto, listas de selección, combos de selección, botones de radio o de opción, etc); el hecho era que el usuario tenía un botón para "guardar" un registro una vez que completaba el formulario, pero también contaba con un botón llamado "limpiar" que servía para resetear el valor de todos ésos componentes y así el usuario pueda registrar un "nuevo" registro. A saber: al presionar sobre el botón "limpiar" los jTextField deberían estar vacíos, los jList no deberían tener ningún item seleccionado, ningún jRadioButton debería estar seleccionado, y en general todos los componentes que se encontraban en el formulario y que sirven para introducir datos deberían estar como a un principio.

El presente post está dirigido a aquellos programadores que se encuentran en la siguiente situación: si tenemos varios jRadioButtons en el escenario, antes de interactuar con ellos no hay ninguno seleccionado. Si seleccionamos uno se marca y el resto se desmarcan, de manera que solamente puede haber un jRadioButton de grupo (ButtonGroup) seleccionado. ¿Pero qué ocurre si una vez seleccionado un jRadioButton, queremos que vuelvan a estar todos deseleccionados o mejor dicho sin seleccionar?

jueves, 4 de octubre de 2012

Cómo agregar y eliminar filas de un JTable de Java

En muchas ocasiones nos encontramos con la necesidad de aumentar, agregar, insertar o adicionar filas; así como también disminuir, quitar, remover, borrar o eliminar filas de un JTable en tiempo de ejecución.

Para realizar ésas tareas podemos echar mano de la clase DefaultTableModel, la cual nos provee de un método llamado addRow que requiere de un solo parámetro: rowData; el cual no es más que un array o arreglo de Objects, ése mismo parámetro también puede ser un objeto de la clase Vector, pero para éste ejemplo utilizaremos un array de Objects (Object[]). Éste array de Objects vendría a ser como la fila que queremos adicionar al final de la tabla, donde cada elemento del arreglo vendría a contener un campo del registro o fila a ser adicionado.

DefaultTableModel también tiene el método insertRow, el cual necesita de dos parámetros: row y rowData; el parámetro row es un entero (int) que indica el índice de la fila de la tabla en la cual se desea insertar la nueva fila. Mientras que rowData, como dijimos anteriormente puede ser un arreglo de Objects (Object[]) o un Vector, el cual representa la nueva fila a insertarse.

Encuesta: ¿Quién es el mejor catedrático de la carrera de Ing. Informática de la UAGRM?