Entradas

Filtrar una tabla en JTable

Un alumno me pregunta cómo filtrar los datos de un JTable, siendo estos datos obtenidos de un query. La mejor manera no es manipular el JTable a través de su cantidad de columnas, agregando filas, borrando algunas de ellas, modificando las celdas, etc. Eso es realmente un dolor de cabeza. Recordemos que estamos trabajando en Java que es Orientado  a Objetos.. no en VisualBasic. Así que, si queremos manipular los datos de un JTable, debemos usar una clase que se encargue de manipular los datos, y que el jtable use esa clase. La interfaz TableModel es la indicada. Pero tiene demasiados métodos a implementar. Así que usaremos algo ya casi hecho. Se llama la clase abstracta AbstractTableModel . Simplemente, debemos heredarla: public class PersonasTableModel extends AbstractTableModel {.... Y con eso debemos implementar tres métodos: getRowCount() , getColumnCount() y getValueAt(int rowIndex, int columnIndex) . La clase que estamos creando debe tener un arreglo interno. Este arreglo es el

JDBC para Access sin DSN

Para acceder a Access desde un JDBC, siempre nos han enseñado que se debe a Herramientas Administrativas > Administrador de Orígines de ODBC, crear un nuevo Origen, especificar el nombre del DNS, bla bla bla, y después desde el JDBC escribir como URL el nombre del DNS, bla bla. Lo malo de esta técnica es que en cada máquina donde se va a ejecutar la aplicación java, necesita que se configure el ODBC. Ya que somos profesionales, debemos evitar las configuraciones adicionales para que nuestra aplicación funcione. Java nos hace profesionales :) Así que, ahora evitaremos todo el rollo de crear el DSN en el ODBC. Usemos esto: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String myDB ="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/data/neptuno.MDB"; Connection conn = DriverManager.getConnection(myDB,"",""); Pero no solo es para Access, sino para cualquier ODBC. Veamos como hacer lo mismo pero para con el Excel Class.forName("sun.j

Combo dependiente con JSP + Ajax

Imagen
Este es sin duda el tema más buscado para los que desarrollan formularios web: Combos dependientes en JSP usando AJAX Esto es clásico en los ejemplos de combos tipo departamento-provincia-distrito, cuando los elementos de un combo depende de la selección de otro. Pues ya, aquí está... ... y totalmente actualizado!! Aquí lo explicamos con JQuery y AngularJS, y de regalo.. con Bootstrap y Material Design

A traducir NetBeans 6.7 (ahora vía web)

Para los que quieran apoyar en la traducción de NetBeans 6.7 al español, ahora SUN dispone del CTI: Community Translation Interface. Es un ambiente web donde todos (o al menos los quieran) puedan ayudar a traducir el NetBeans. Ya hay bastante avanzado (importado de las versiones anteriores), así que nuestra misión es completar lo faltante. Recordando: las dos versiones anteriores traducidas al español fueron la 5.5 (en su totalidad) y la 6.5 (completado la parte Java SE). Desde la versión 5.5 hasta las 6.7 definitivamente hay muchas cadenas nuevas a traducir. ¿Como se traduce? Bueno, ya no hay nada que descargar (como el OmegaT), solo entrar aquí: https://cti.sunvirtuallab.com/community/ Esperar que se cargue los proyectos, y luego seleccionar en la margen izquierda los "proyectos" que comienzan con "NetBeans 6.7". La versión más rápida: en la margen izquierda inferior seleccionar "spanish", y solo se filtrarán los proyectos de NetBeans, un par de OpenSola

Acerca de mi blog

Imagen
No quiero pecar de presumido, ni orgulloso. Pero dejaré un poco de lado la modestia. Cuando comencé mi blog (diesil java) lo hice porque quería apuntar ciertas cosas de java que no quería perder. Como la configuración del tomcat + apache (usando mod_jk), algunos tutoriales que hice para el jugperu.com, etc. Pero luego poco a poco fui apuntando más cosas. Y no pensé que llegaría a tanta expectativa. Al final, el nombre "diesil java" no tenía nada que ver. Ya no era algo personal, sino casi de dominio público. Por tanto decidí cambiar el nombre del blog a "apuntes de java". Pero no lo hice saber al inicio. Pasaron dias, semanas, y nadie visitaba esta nueva dirección. Así que "renací" la antigua dirección "diesil-java.blogspot.com" y puse al anuncio de la nueva dirección. No sé si será por ese anuncio (más creo que sí), pero la cantidad de visitantes subió de entre ayer y hoy en 100 visitas. Y yo que pensé que nadie visitaba mi blog... es que como c

Traducen la "biblia" de NetBeans Platform (al Inglés)

El libro de Heiko Böck "The Definitive Guide to NetBeans Platform" fue traducida al inglés. El libro ya está en la imprenta, y estará disponible su venta en el JavaOne (Junio 2009). Si alguien desarrollar aplicaciones sobre el NetBeans Platform, este es un el libro definitivo para poder hacerlo. http://blogs.sun.com/geertjan/entry/finalized_cover_of_brand_new Comentarios personales: Por fin un libro que habla de NetBeans platform. Esperemos que sea tan completo como para desarrollar aplicaciones sobre él. La plataforma de Eclipse ya ha tomado bastante terreno, y ya no veo aplicaciones que no lo usen. ¿Qué faltará para traducir un libro al español? Offtopic: ¿Qué pasará después con NetBeans? Oracle compró BEA, y este último utiliza Eclipse para todas sus aplicaciones (tales como BPM y Weblogic Workshop). Oracle compró ahora Sun. ¿Pasará todas sus aplicaciones sobre NetBeans?. Nada es cierto. Oracle aseguró que lo que más atrajo la compra es por sus productos Open

Dao y Spring

En la siguiente página, se explica cómo usar Spring usando el Patrón DAO. http://sites.google.com/site/apuntesdejava/Home/dao-y-spring Se explica también cómo usarlo con JDBC, iBatis y JPA. Se analizan los tres enfoques sobre un mismo proyecto, ya que solo así se ve la importancia de usar el patrón DAO y el patrón Factory. El ejemplo es el desarrollo de una aplicación JSF que accede a la base de datos "sample" que viene en el Java DB. También se encuentran los proyectos usados en el tutorial

Convertir JSP a RIA con ICEfaces

Encontré este vídeo donde se muestra cómo se convierte una aplicación de puros JSP a una aplicación realmente enriquecida para Internet (RIA) usando ICEfaces. http://java.dzone.com/features/icefaces-jsp-to-ria/

Inicializadores en Java

A continuación, algo respecto a los inicializadores en Java. https://sites.google.com/site/apuntesdejava/Home/inicializadores Es también comentado en el libro de certificación SCJP 1.5

Lanzan NetBeans 6.7 (Beta)

El nuevo NB 6.7 (por ahora en Beta) tiene las siguientes características: La mas importante que considera NB: Desarrollador conectado al proyecto Kenai, integración con Bugzilla (por fin!!) Maven. con su editor POM mejorado. PHP: Compatibilidad con Selenium, y PHPUnit C/C++: Ahora soporta con la biblioteca Qt Para más información de la versión beta 6.7, lo verán aqui: http://www.netbeans.org/community/releases/67/

Comparable y Comparator

Imagen
Tenemos una lista de objetos como Persona, o Producto, pero necesitamos ordenarlo ¿Cómo lo hacemos? Aquí veremos, en un pequeño tutorial, cómo ordenar colecciones en Java. Olvídense del ordenamiento de búrbuja, quickSort... java lo tiene todo.

Lenya en Tomcat 6.0

Existe un CMS de apache llamado Lenya . En las instrucciones de compilación está para Tomcat 5.5. Al compilarlo y después ejecutarlo, no funciona. Esto es por algo importante que dice en las instrucciones y podría pasar por alto. En resumen. Se debe editar el archivo local.build.properties y modificar la línea siguiente tomcat.endorsed.dir=${tomcat.home.dir}/lib Ya que la estructura predeterminada se usa en Tomcat 5. Compilar, y servir

Introducción en Facelets

He colocado un nuevo tutorial básico en español de cómo crear una aplicación con Facelets http://wiki.netbeans.org/FaceletsEnNetBeans

Convertir Date a String (y String a Date)

Java almacena las fechas en un objeto llamado java.util.Date . Si se imprime o se usa como cadena, el resultado no es nada agradable ya que no se entiende: Sat Mar 27 00:00:00 COT 1976 Pues bien, existe una clase llamada java.text.DateFormat que permite convertir de Date a String (bajo un formato en especial) y visceversa (también usando el mismo formato). Aquí dejo un pequeño código (adaptado del libro de certificación SCJP 5.0 de Katty Sierra - Página 464) donde se muestra los diferentes formatos que maneja la clase java.text.DateFormat . Si necesitas convertir una cadena (String) a Date, primero prueba este código, analízalo y luego piensa cómo lo puedes usar. import java.text.DateFormat; import java.text.ParseException; import java.util.Date; public class Main { public static void main(String[] args) { Date fecha = ne w Date(); DateFormat dfDefault = DateFormat.getInstance(); DateFormat dfDateInstance = DateFormat.getDateInstance();

Glassfish como servicio de Linux (CentOS / RedHat o similar) y de Windows

Estaba buscando cómo configurar Glassfish como servicio de Linux. Justo mi servidor es CentOS, así que este post me cayó a pelo http://anandnalya.com/2009/04/07/running-glassfish-as-a-service-on-centos/ Y para Windows (tuve que instalarlo en el servidor de un cliente que tiene Windows 2003 Server) http://www.ryandelaplante.com/rdelaplante/entry/creating_a_windows_service_for

El Oráculo del Sol: Oracle compra Sun

Creo que es la noticia del año Oracle compra Sun: http://www.oracle.com/us/corporate/press/018363 http://www.sun.com/third-party/global/oracle/index.jsp

Otros proyectos de Sun Microsystems

Ya sabemos los productos estrellas de Sun Microsystems. Sino hagamos un poco de memoria: Plataforma y lenguaje de programación: Java Sistema operativo: OpenSolaris Suite de ofimática: OpenOffice.org Base de datos: MySQL Servidor de aplicaciones: Glassfish Entorno de desarrollo: NetBeans lenguaje script para animación: JavaFX Entorno virtual: VirtualBox Y si siguen así, van a querer comprar Firefox y ya sería la competencia de Microsoft Bueno, pero no todo son software. sino tambien colaboración. Existen dos buenos productos que tiene Sun Microsystem: Project Kenai ( http://kenai.com/ ): Es una especie de Google Code hosting o SourceForge. Muy bueno. Sugiero que lo prueben. Zemby ( http://zembly.com/ ) Es para desarrollar aplicaciones para redes sociales como Facebook, OpenSocial y cosas parecidas. Ambos, naturalmente, son gratuitos Bueno, a ver si le dan una revisada a esos productos.

La historia de 10 años de NetBeans en 5 minutos

Usando Code Swarm , la gentita de NB hizo un vídeo utilizando el repositorio de CVS, para visualizar la historia del software desde el año 1998 hasta el 2008. En el 2009 dejaron el CVS y comenzaron a usar Mercurial. http://netbeans.tv/community/NetBeans-Code-Swarm-Video%3A-10-Years-of-NetBeans-History-in-5-Minutes!-436/

ICEFaces 1.8 disponible

ICEfaces lanza su versión 1.8, con 350 correcciones a su versión anterior, además de nuevas mejoras. http://www.icefaces.org/releasenotes/icefaces-1.8.0-RN.html Se puede descargar esta versión aquí http://www.icefaces.org/main/downloads/os-downloads.iface Además, incluye el plugin para netbeans. Si se tiene instalado el plugin descargado de NetBeans Update Center, primero hay que desinstalarlo antes de instalar el plugin descargado de ICEfaces.

MD5 en Java (2)

Este realmente me pareció el más óptimo para crear un resumen MD5. Lo encontré en www.gravatar.com . 1 import java.io.UnsupportedEncodingException; 2 import java.security.MessageDigest; 3 import java.security.NoSuchAlgorithmException; 4 5 public class MD5Util { 6 7 public static String hex( byte [] array) { 8 StringBuffer sb = new StringBuffer(); 9 for ( int i = 0; i < array.length; ++i) { 10 sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3)); 11 } 12 return sb.toString(); 13 } 14 15 public static String md5Hex(String message) { 16 try { 17 MessageDigest md = 18 MessageDigest.getInstance( " MD5 " ); 19 return hex(md.digest(message.getBytes( " CP1252 " ))); 20 } catch (NoSuchAlgorithmException e) { 21 } catch (UnsupportedEncodingException e) { 22 } 23