Para colocar los elementos de una lista en orden dentro de un ArrayList se puede utilizar la clase Collections. El siguiente código muestra el resultado de utilizar el método sort() de la clase Collections en un ArrayList:
En la primera parte se puede observar que con objetos del tipo String al utilizar el método sort con un List nos permite ordenar alfabéticamente los elementos sin mucho problema.
Luego se observa la forma de ordenar por medio de atributos de un objeto. Primero se muestra ordenando el objeto Hijo por medio de fechas (que pueden ser de nacimiento, registro, etc.) y luego se ordena la lista por medio de la edad.
Aquí se puede observar la clase Hijo:
De esta forma se facilita mucho ordenar objetos por medio de uno de sus atributos.
miércoles, 11 de diciembre de 2013
lunes, 10 de junio de 2013
JavaFX: Agregar y eliminar filas de una tabla (TableView) dinamicamente
Es recomendable ver antes: JavaFX: Agregar Tabla
Los elementos del tipo TableView en JavaFX usan una lista observable para permitir administrar su contenido. Además JavaFX permite la creación de celdas personalizadas, podemos agregar muchos elementos visuales. En este caso usamos un botón (Button) para permitir para eliminar un elemento de la tabla.
Para realizar lo anterior se puede utilizar el siguiente código:
Básicamente los elementos del código son la inicialización de la ventana y tabla, agregar las columnas (incluyendo la que muestra el botón a la tabla), el área para agregar una nueva fila (línea 100) que básicamente solo agrega más objetos a una lista observable, la clase ButtonCell que nos permite agregar el botón dentro un celda (donde se agrega la funcionalidad) y el pojo persona para manejar la información.
sábado, 8 de junio de 2013
Python: Escribir un Json
Para leer un json en python este trae desde la versión 2.6 incluida la librería de json. Esta librería nos permite escribir una cadena json a un archivo o fichero. Con el siguiente código fácilmente se puede obtener la información de una cadena json, parsear el contenido y escribirlo en archivo.
Básicamente parseamos nuestra cadena con el método dumps, buscamos un fichero donde guardarlo y lo escribimos en este con el método dump.
Python: Leer un Json
Para leer un json en python este trae desde la version 2.6 incluida la librería de json. Esta librería nos permite leer una cadena json desde un archivo y explorarla a través de sus etiquetas. En el siguiente ejemplo se puede tener un archivo .json con el siguiente contenido:
Y con el siguiente código facilmente se puede obtener la información del archivo cargarlo a un objeto Json y explorarlo para leerlo luego.
Básicamente abrimos el archivo o fichero json y luego obtenemos con el método load la cadena para ubicarla dentro de la variable json para luego explorar su contenido. El resultado del código anterior es el siguiente:
'http://javainutil.blogspot.com'
'Escribir un JSON'
'tag 2'
domingo, 2 de junio de 2013
Compilar C / C++ en Windows
En Windows existen 2 muy buenas alternativas de compilar nuestros programas hechos en C/C++ y así obtener el ejecutable. La primera es utilizar en compilador que Visual Studio trae consigo. Visual Studio trae consigo muchas herramientas que nos permiten realizar nuestro proyecto desde cero.
En caso de que no deseemos utilizar las el compilador de Visual Studio, existe una muy buena alternativa que es MinGW. MinGW permite crear un pequeño entorno de desarrollo que nos permite utilizar las funcionalidades de las librerías de Microsoft C.
En el siguiente video se muestra el proceso de instalación y compilación de un ejemplo usando MinGW.
Siguiendo el tutorial, se podrá compilar nuestro código en C/C++ para generar un .exe que podemos ejecutar luego.
martes, 28 de mayo de 2013
Instalar Java en Centos 6.4
Para instalar Java en cualquiera de sus versiones basta con seguir los siguientes pasos, (donde diga versión, lo cambiamos con la el paquete descargado):
1. Descargar Java
Java se puede descargar en la página de Oracle. Se puede utilizar el siguiente enlace http://www.oracle.com/technetwork/java/javase/downloads/index.html. Se debe descargar el paquete .rpm ya sea el de 64 ó 32 bits, JDK ó JRE.
2. Cambiar a usuario root:
sudo -isudo su
3. Instalar el JDK o JRE
//JDKrpm -Uvh /ruta/al/directorio/jdk-<version>.rpm//JRErpm -Uvh /ruta/al/directorio/jre-<version>.rpm
4. Instalar java, javaws, libjavaplugin.so (para Mozilla) y javac con el comando alternatives --install
// javaalternatives --install /usr/bin/java java /usr/java/latest/jre/bin/java 20000// javawsalternatives --install /usr/bin/javaws javaws /usr/java/latest/jre/bin/javaws 20000// Java Browser (Mozilla) Plugin 32-bitalternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so libjavaplugin.so /usr/java/latest/jre/lib/i386/libnpjp2.so 20000// Java Browser (Mozilla) Plugin 64-bitalternatives --install /usr/lib64/mozilla/plugins/libjavaplugin.so libjavaplugin.so.x86_64 /usr/java/latest/jre/lib/amd64/libnpjp2.so 20000// Se instala javac solo si descargamos el JDKalternatives --install /usr/bin/javac javac /usr/java/latest/bin/javac 20000alternatives --install /usr/bin/jar jar /usr/java/latest/bin/jar 20000
5. Verificar las versiones de java, javaws, libjavaplugin.so y javac
java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)
6. Cambiar entre las versiones disponibles.
Este paso se debe realizar para cada comando. Java, javaws, javac, etc.
alternatives --config java
There are 4 programs which provide 'java'.
Selection Command
-----------------------------------------------
* 1 /usr/java/jdk1.6.0_24/jre/bin/java
+ 2 /usr/java/jdk1.6.0_26/jre/bin/java
3 /usr/lib/jvm/jre-1.6.0-openjdk/bin/java
4 /usr/java/jdk1.7.0_21/jre/bin/java
Enter to keep the current selection[+], or type selection number: 4
Al final solo queda crear o cambiar la variable de entorno. Esto se hace con el comando:
// export con JDKexport JAVA_HOME="/usr/java/jdk<version>"// export con JREexport JAVA_HOME="/usr/java/jre<version>"
viernes, 24 de mayo de 2013
Java: Eliminar elementos repetidos en ArrayList
Muchas veces nos es necesario quietar cualquier elemento que este duplicado dentro de un ArrayList<T> de Java. Para realizar tal acción existen colecciones del tipo HashSet<T> que nos permiten agregar todos los elementos del array y nos devuelve una colección de objetos sin duplicados.
Para realizar tal acción simplemente hay que agregar la colección del ArrayList<T> al HashSet<T> y luego regresar la información. Se puede observar en el siguiente código:
En el código anterior hay dos casos, el primero usa un HashSet<T> el cual elimina los duplicados de un array de String pero nos lo devuelve sin ningún orden en particular. En el segundo caso se usa un LinkedHashSet<T> el cual elimina los repetidos de un ArrayList de objetos Datos y mantiene el orden con el que venía. Si se desea que la respuesta este ordenada LinkedHashSet es la solución.
Es importante que al trabajar con objetos con varios atributos como lo es Datos sobrescribamos sus métodos equals() y hashCode(). Pueden leer sobre esto en el siguiente post.
Al final la respuesta nos quedaría asi:
Cadena2
Cadena3
Cadena4
Cadena1
Info: 1-Nombre1-Empresa1
Info: 2-Nombre2-Empresa2
Info: 3-Nombre3-Empresa3
Info: 4-Nombre4-Empresa4
Info: 5-Nombre5-Empresa5
Info: 1-Nombre2-Empresa2
miércoles, 22 de mayo de 2013
Eclipse: Sobrescribir metodos equals() y hashCode()
Para determinar si un objeto es diferente o igual a otro a veces es necesario compararlos con el método equals(). Cuando comparamos objetos compuestos creados por nosotros muchas veces esta comparación no es muy certera. Por tal motivo es muy útil sobrescribir los métodos equals() y hashCode() de la clase. Por suerte eclipse ya trae una utilidad que nos permite generarlos automáticamente sin necesidad de estar armándolos paso a paso.
Para realizar esto damos click derecho al proyecto, luego nos dirigimos a Source y finalmente a Generate hashCode() and equals()....
Por ejemplo al tener una clase como la siguiente:
Nos dará el siguiente resultado:
Ya con esto se pueden comparar dos instancias del mismo objeto cuando sea necesario y usará los atributos seleccionados para detectar si son iguales.
sábado, 18 de mayo de 2013
Java: Embeber un Jnlp a HTML
Luego de haber creado un Jnlp, este se puede agregar a un HTML. Es una forma de agregar una aplicación de JavaFX a un HTML. Oracle provee una librería de Javascript que nos permite cargar la aplicación dentro de una página web. Esta librería se puede descargar en el siguiente enlace o en los recursos de Oracle.
Para que nuesto Jnlp pueda correr en un ambiente web es importante que este certificado. De no contar con una institución certificadora se puede realizar un certificado propio que tiene duración limitada. Para realizar este certificado abrimos una linea de comandos o consola y ejecutamos las siguientes instrucciones en el directorio del archivo:
Luego de esto nuestro jnlp ya esta listo para ser cargado desde un ambiente web. Si siguieron el post que esta al inicio de la página, al ejecutar el comando javafxpackager se debió de haber creado un archivo .html. Este archivo tiene la siguiente estructura.keytool -genkey -keystore tracker2.ks -alias tracker2
keytool -selfcert -alias tracker2 -keystore tracker2.ks
jarsigner -keystore tracker2.ks C:\Jars\tracker2.jar tracker2
Se puede observar que lo primero que se hace es importar la librería de Javascript. Luego tenemos 2 funciones. La primera es lanzarlo como webstart y la segunda embeberlo en la página. La información necesaria es la ubicación del Jnlp, si esta en una maquina local puede ser el directorio pero en este caso se subio a un site de Google. Lo siguiente es el Base64 del archivo Jnlp. Si realizamos un cambio es necesario recalcular este Base64. Para calcular esto pueden usar la siguiente página. Luego solo ingresamos la version de JavaFX. En el caso de la función para embeberlo es necesario indicar en que <div> se colocara y datos de altura y anchura. Al final tendremos nuestra aplicación de JavaFX en Html como se ve en la siguiente página.
Java: Crear un JNLP
Muchas veces nos topamos con archivos .jnlp, los cuales son una especificación usada por Java Web Start, también conocido como el comando javaws. Básicamente un JNLP (Java Network Language Protocol) no es mas que un archivo de texto que puede editarse. En este archivo se puede definir la fuente de la información, en este caso el jar. Muchas aplicaciones de JavaFX son compatibles con esta tecnología
El siguiente ejemplo es de como se be un archivo .jnlp
Básicamente solo se define la información básica de la aplicación, definimos su fuente en la etiqueta <jnlp>, los recursos que necesita (como la ubicación del .jar) y su configuración inicial.
Si no deseamos crear el Jnlp desde cero java incluye desde su versión 7 o en el SDK de JavaFX para la versión 6 la utilidad "javafxpackager". Esta utilidad la podemos agregar las variables de entorno del sistema para poder utilizarala en todos lados. Para realizar esto simplemente abrimos una linea de comandos (cmd), vamos al directorio donde esta nuestro .jar y escribimos la siguiente instrucción
Esta instrucción genera dos archivos. Un .jnlp que podemos usar de inmediato y un .html que tiene embebido el .jnlp en la página web. El archivo .jnlp se puede lanzar con doble click si esta bien configurado o se puede usar el comando javaws para lanzarlo. Al final nos mostrará este mensaje antes de abrir la aplicación.C:\Directorio javafxpackager -deploy -outdir C:\AlgunDirectorio -outfile Archivo
-width 600 -height 500 -srcdir -srcfiles archivo.jar -appclass ruta.al.Main
-name "Nombre" -vendor "Rawr" -v
martes, 7 de mayo de 2013
Javascript: Cifrar cadena a SHA
Existen varias formas para obtener el hash SHA en alguna de sus versiones usando varios lenguajes de programación. En el caso de Javascript existe una implementación, jsSHA, que nos permite obtener las versiones SHA-1, SHA-224, SHA-256, SHA-384 y SHA-512 de un cadena de texto.
Pueden obtener el script de jsSHA en el siguiente enlace <-click, o pueden descargarlo directamente de su pagina en GitHub.
El siguiente código muestra como utilizar jsSHA dentro de un html.
Como se puede observar se debe incluir el script. Esta dirección varia según la estructura de los directorios o puede ser una dirección web. La función simplemente obtiene el texto de un input, obtiene el hash del texto y lo muestra en otro input.
El constructor de jsSHA necesita el texto a cifrar y su codificación que puede ser texto plano, base64 o hexadecimal. El método getHash necesita la version de SHA y la forma de salida que puede ser base64 y hexadecimal.
Al final se obtendrá algo como lo siguiente, un cifrado sha512 online, en este caso:
viernes, 3 de mayo de 2013
Java: Generar hash SHA y encriptar cadenas
Muchas veces es necesario cifrar, encriptar o generar hashes de passwords u otros textos delicados. Para realzar esto en Java se utiliza la clase MessageDigest la cual nos permite cargar una algoritmo y encriptarlo en forma de bytes.
Como se puede observar simplemente obtenemos la instancia del algoritmo que se desea, le agregamos la cadena en forma de bytes con el método update y lo trasformamos. Para poder visualizarlo en forma Hexadecimal se utiliza la clase Hex que se obtiene de la librería commons-codec de Apache, la cual se puede descargar en el siguiente link o directamente de la pagina de Apache.
Al final se obtiene lo siguiente:
La clase MessageDigest permite el uso de los algoritmos MD2, MD5, SHA-1, SHA-256, SHA-348, SHA-512.
En el siguiente código se puede observar un ejemplo de MD5, SHA-1 y SHA-512:
Como se puede observar simplemente obtenemos la instancia del algoritmo que se desea, le agregamos la cadena en forma de bytes con el método update y lo trasformamos. Para poder visualizarlo en forma Hexadecimal se utiliza la clase Hex que se obtiene de la librería commons-codec de Apache, la cual se puede descargar en el siguiente link o directamente de la pagina de Apache.
Al final se obtiene lo siguiente:
793d5ecd344bd91c808917d8821ae74b4c84550964b67906bdeb6c7dc0146bef90b5a2b326ac31049b0e3930a0d697b760c13236596da2d142e6947a1e3386b5
8e8725edeaa090c62110e9c7b23a243873d61b36
1462a2da3e9d67e5824c71b2ac91bc66
jueves, 2 de mayo de 2013
Instalar Python en CentOS
Las últimas versiones de CentOS (6.4 para abajo) ya traen instalado Python 2.6 por defecto. Se pueden instalar otras versiones como la 2.7 y la 3.3 pero puede que cause problemas de versiones. Para instalar las nuevas versiones sin problema se pueden utilizar los comandos descritos a continuación como un usuario root.
Primero se instalan herramientas de desarrollo que den mayor funcionalidad a python, se ejecuta el siguiente comando:
Luego dependiendo de la versión que deseemos instalar la descargamos, descomprimimos y luego la instalamos. Es importante que usemos make && make altinstall y no make && make install ya que esto puede sobrescribir la versión actual de python. En este caso instalaremos la version 3.3.1#yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
# wget http://www.python.org/ftp/python/3.3.1/Python-3.3.1.tar.bz2 # tar xf Python-3.3.1.tar.bz2 # cd Python-3.3.1 # ./configure --prefix=/usr/local # make && make altinstall
Nuestro nuevo python esta disponible en /usr/local/bin/python3.3
Para que los paquetes de las diferentes versiones de python no se mezclen es recomendable que se instale Distribute. Por cada versión de python se debe instalar un distribute. Para instalarlo basta con realizar los siguiente:
# wget https://pypi.python.org/packages/source/d/distribute/distribute-0.6.36.tar.gz # tar xf distribute-0.6.36.tar.gz # cd distribute-0.6.36 # python3.3 setup.py install
Con esto se obtendrá el script /usr/local/bin/easy-install-3.3 que permitirá instalar los paquetes de la versión correspondientes un directorios aparte, en este caso /usr/local/bin/python3.3/site-packages/.
Si se desea instalar otra versión, digamos la 2.7, se puede usar el mismo procedimiento. Simplemente se cambia el numero de versión en todas las instrucciones de 3.3 a 2.7.
sábado, 27 de abril de 2013
Java: Leer/Escribir Json con Gson
Gson es un parser que nos permite leer cadenas obtenidas de archivos Json hecho para Java que fue realizado por Google. A diferencia de otros parsers detecta la estructura del .json y nos permite asignarle estos valores aun Objeto definido por nosotros si las estructuras coinciden, en otras palabras nos permiten parsear objetos json a objetos java.
Se puede descargar la librería Gson de code.google.com o directamente de este link <-click.
En este caso se usará la clase Hijo para definir la estructura que tendrá el json. Hijo es un pojo sencillo como se ve a continuación:
El siguiente código muestra como leer una cadena json haciendo uso de la librería gson y sus métodos, para instanciar un objeto Hijo con sus datos según el json:
Este código da como resultado lo siguiente:
45
Pepe
Por otro lado si se desea escribir una cadena json en base a un objeto, en este caso Hijo, simplemente se debe utilizar el siguiente código:
El código anterior da como resultado la siguiente salida en consola:
{
"nombre":"Juan",
"apellido":"Carabela",
"edad":46,
"hijo":{
"nombre":"Rambo",
"apellido":"Carabela",
"edad":21
}
}
Se puede descargar la librería Gson de code.google.com o directamente de este link <-click.
En este caso se usará la clase Hijo para definir la estructura que tendrá el json. Hijo es un pojo sencillo como se ve a continuación:
El siguiente código muestra como leer una cadena json haciendo uso de la librería gson y sus métodos, para instanciar un objeto Hijo con sus datos según el json:
Este código da como resultado lo siguiente:
45
Pepe
Por otro lado si se desea escribir una cadena json en base a un objeto, en este caso Hijo, simplemente se debe utilizar el siguiente código:
El código anterior da como resultado la siguiente salida en consola:
{
"nombre":"Juan",
"apellido":"Carabela",
"edad":46,
"hijo":{
"nombre":"Rambo",
"apellido":"Carabela",
"edad":21
}
}
jueves, 25 de abril de 2013
JavaFX: Tabla Editable
Deriva de: JavaFX: Agregar Tabla
Dentro de las capacidades de las tablas de JavaFX esta la posibilidad de crear celdas personalizadas con otros elementos visuales. En este caso usamos un TextField para permitir crear el efecto de una tabla editable.
Para entender el código es recomendable haber leido el post que se indica al principio. Ya que se usa una lista de objetos base para llegar la tabla, se necesita definir en este objeto. En este caso es el mismo de la entrada anterior.
Para lograr editar la tabla, se necesita crear un nuevo tipo de celda. En este caso se crea la clase EditingCell que hereda de la celda. Luego se sobrescriben los métodos. El método start inicia la edición y si la celda es nula inicializa el TextField con el método createTextField() con un listener para detectar las teclas Enter y Esc. Luego el método cancel simplemente llama al de la clase superior y maneja el TextField. El método uptate también llama al de la clase superior y actualiza la visualización de la celda mostrando el TextField o no cuando se esta editando. El ultimo método simplemente devuelve el contenido de la celda.
Finalmente le asignamos a la columna deseada una función de retorno o callback. En este caso se le asigna solamente a la columna Teléfono.
lunes, 22 de abril de 2013
HTML: La ñ y vocales con tilde
Debido a la gran cantidad de exploradores web, que usan diferentes métodos de codificación muchas veces la letra ñ y las vocales con acentos suelen tener problemas para desplegarse. Sí usan codificaciones com la UTF-8 se pueden evitar estos problemas. Para utilizarla basta con definir dentro de la metadata lo siguiente para el HTML:
Pero esto no aplica en otra codificaciones, por tal motivo existe la opción de reemplazar estos caracteres por códigos. Estos códigos son los siguientes:
Pero esto no aplica en otra codificaciones, por tal motivo existe la opción de reemplazar estos caracteres por códigos. Estos códigos son los siguientes:
- ñ = ñ
- Ñ = Ñ
Y en el caso de las vocales con acento:
- á = á
- é = é
- í = í
- ó = ó
- &uactue = ú
- Á = Á
- É = É
- Í = Í
- Ó = Ó
- &Uactue = Ú
Intercambiando estos códigos por los caracteres se puede escribir el siguiente mensaje:
La compañía ©
y obtendriamos:
La compañía ©
Como se puede observar se uso © para representar el simbolo de copyrights. Existen mas códigos que los mencionados aquí. Estos los pueden observar en la este enlace.
HTML: Códigos HTML - Caracteres y símbolos
En la siguiente tabla se observan los códigos ASCII estándar, nombres de entidades HTML, ISO 10646, ISO 8879, ISO 8859-1. Estos son soportados por todos los navegadores de Internet:
|
viernes, 19 de abril de 2013
Java: Convertir fecha y hora entre zonas horarias o timezones
Para cambiar fechas y horas en Java se usa la clase TimeZone. Existen varias formas de realizar esta conversión pero en este caso usaremos un DateFomat para obtener la fecha transformada en forma de un String. El siguiente código realiza el cambio de zona horaria:
La salida sería la siguiente:
La salida sería la siguiente:
Java: Manejo de Cadenas. Método String.split().
En Java el método split(String regEx) nos permite dividir una cadena en base a las ocurrencias de una expresión regular definida dentro. Ya que es una expresión regular puede ser simplemente una letra, coma, signo o una construcción mas elaborada.
Hay que tomar en cuenta que existen símbolos especiales en las expresiones regulares como el punto, el signo más, los corchetes, etc. No se pueden agregar literalmente ya que dan problema. En caso de querer usarlos como cadenas se debe indicar usando \\. Por ejemplo \\. \\+ \\[ etc.
A continuación código para ejemplificar el método:
La salida del código seria la siguiente:
jueves, 18 de abril de 2013
Java: Convertir Date a String
Para convertir un objeto del tipo Date a String debemos tomar en cuenta que java usa siempre un formato por default. Por suerte existe la clase DateFormat que tiene varias implementaciones pero en este caso la veremos con SimpleDateFormat. Estas clases nos permiten convertir un objeto Date a String usando un formato o sintaxis que se adecue a nuestra necesidades.
El siguiente ejemplo muestra el cambio de la fecha actual a varios formatos:
El siguiente ejemplo muestra el cambio de la fecha actual a varios formatos:
El código anterior nos permite obtener la fecha y la hora, pero se pueden obtener los minutos, los segundos, el año y cualquier otro tipo de información que este dentro de la fecha. El resultado del código anterior es el siguiente:
En la siguiente imagen se pueden observar algunos ejemplos de SimpleDateFormat con sus resultados en String.
lunes, 8 de abril de 2013
Instalar Linux Centos 6.4
CentOS es una distribución de Linux basada en Red Hat, y muy utilizada en entornos de Computación, donde las herramientas de clustering tienen un peso superior al resto de herramientas, y es que CentOS incorpora de forma nativa muchas aplicaciones dedicadas al agrupamiento de servidores.
Si bien es cierto estas aplicaciones pueden ser instaladas en cualquier otra distribución Linux, la facilidad que introduce CentOS ha hecho que esta distribución sea muy vista en Centro de Computación y todos aquellos lugares donde se desee mantener agrupaciones de servidores.
El siguiente video muestra como instalar CentOS paso a paso en su version 6.4:
jueves, 4 de abril de 2013
Java: Operadores especiales
Muchas veces nos encontramos en Java con un operador mas-igual (+=), por-igual (*=), etc. Sin saber que realizan. Aunque el título del post menciona operadores especiales, estos lo que tienen es que no son muy usados. La idea de usar estos operadores es reducir el numero de visitas de memoria que se hacen, aunque no se percibe en una corrida, si se usa en un bucle con miles de ciclos puede hacer una diferencia. El siguiente código muestra algunos ejemplos.
Como se puede observar, estos operadores no se limitan simplemente a operaciones entre variables tipo int. También puede usarse en cualquier tipo de variable u objeto que utilice los operadores básicos (+,-,*,/) como se ve en el String para concatenar. El código anterior, daría como resultado lo siguiente:
miércoles, 20 de marzo de 2013
JavaFX: DialogBox/MessageBox
Actualmente dentro de las utilidades de JavaFX no existe la opción para desplegar Dialog Box o Message Box. Estas utilidades se pueden crear desde cero pero puede que lleven un poco de tiempo. A continuación se mostrará un alternativa que usa la siguiente librería. <-click.
Si no saben como agregar la librería en eclipse pueden visitar este post. Al importar y usar esta librería se podrán desplegar mensajes como el de la imagen anterior usando las siguientes lineas de código:
Como se puede observar el método MessageBox.show(), requiere cuatro parámetros que son: Un Stage padre, mensaje a desplegar, titulo de la ventana y los botones e iconos que se deseen desplegar. El primer caso despliega la imagen anterior y el segundo un mensaje de error con un botón de aceptar.
Como retorno el método de MessageBox.show() devuelve un Integer o int con el valor de la acción seleccionada el cual se puede usar para continuar con el flujo del programa.
martes, 19 de marzo de 2013
JavaFX: Agregar Botón a Tabla
Tema relacionado: Agregar y eliminar filas en TableView
En una entrada anterior (esta) se mostró como crear una tabla con JavaFX. En este caso se hará un ejemplo agregando un botón en las celdas de la tabla. La tabla quedará como lo muestra la siguiente imagen:
En una entrada anterior (esta) se mostró como crear una tabla con JavaFX. En este caso se hará un ejemplo agregando un botón en las celdas de la tabla. La tabla quedará como lo muestra la siguiente imagen:
En las tablas de JavaFX existe la opción de agregar celdas personalizadas, como se puede ver en la imagen existe un botón dentro de la celda. Otro punto importante es el manejo del contenido de la tabla por medio de una lista observable que realiza los cambios en la tabla cuando la lista cambia. El código de la tabla anterior es el siguiente:
Para que la tabla funcione con el patrón observador es necesario que cree un POJO (Plain Old Java Object) que represente a la tabla y se haga una lista observable con estos. También se le debe indicar a las columnas de la tabla que elemento del POJO representan. Dentro del POJO se le dan atributos del tipo propiedad y en el caso del botón se le agrega el método que desee que ejecute. El código del POJO es el siguiente:
lunes, 18 de marzo de 2013
JavaFX: Agregar Tabla
Para crear una tabla o TableView en JavaFX, desde la versión 2.0 y posteriores, se cuenta con una interfaz amigable al igual que para muchos de sus elementos. De por sí las tablas ya traen consigo un diseño bastante aceptable como el que se muestra a continuación:
Para realizar una tabla en JavaFX hay que tomar en consideración algunos elementos nuevos que trae. Por ejemplo existe la opción de agregar celdas personalizadas. Otro punto importante es el manejo del contenido de la tabla por medio de una lista observable que realiza los cambios en la tabla cuando la lista cambia. El código de la tabla anterior es el siguiente:
Para que la tabla funcione con el patrón observador es necesario que cree un POJO (Plain Old Java Object) que represente a la tabla y se haga una lista observable con estos como se ve en la linea 28. También se le debe indicar a las columnas de la tabla que elemento del POJO representan. Esto se hace con el método setCellValueFactory() de la clase TableColumn, a la cual se le indica que la propiedad a tomar apuntando que objeto y atributo del objeto elegir. El código del POJO es el siguiente:
miércoles, 13 de marzo de 2013
Eclipse: Crear un JAR
Cuando se ejecuta un programa desde eclipse, lo que se hace generalmente es compilar el código fuente y ejecutar los .class sin la necesidad de crear un JAR que se pueda ejecutar. Para generar o crear un JAR en eclipse basta con seguir los siguientes pasos:
Damos click derecho en el proyecto y elegimos la opcion Export...
Esto mostrará una ventana en la cual podemos elegir 3 opciones:
- JAR file: Esta opción permite crear un JAR en forma de librería, lo cual permite que se pueda importar cualquier clase dentro del mismo y hacer uso de sus métodos y utilidades.
- Javadoc: Esta opción es un auxiliar de la anterior, ya que permitirá crear un JAR que brindará la documentación necesaria de las clases y métodos del JAR anterior.
- Runnable JAR file: Esta opción nos permite crear un JAR que se puede ejecutar con el comando "java -jar <archivo.jar>". Si deseamos poder ejecutar el programa esta es la opción a utilizar.
De haber elegido la opción "Runnable JAR file" se presentara la siguiente ventana en la cual simplemente determinamos la ubicación del JAR generado, la configuración de inicio (en caso de tener más de un método Main, se puede elegir con cual iniciar y con que argumentos) y el manejo de librerías (ya sea extrayendolas o empaquetandolas dentro del JAR).
Al final se tendrá el JAR listo para ser utilizado como ejecutable, librería o documentación.
jueves, 7 de marzo de 2013
Java: Convertir un Array de Bytes a un Archivo
Para convertir un arreglo de bytes en un archivo se puede utilizar la clase FileOutputStream de Java. Esta clase contiene el método "write(byte[] array)" el cual permite convertir el array de bytes al archivo usando el array de bytes que se le da como parámetro. El código muestra como lo hace.
Lo primero que se hace en el código anterior es leer los bytes de un archivo y luego se usan estos mismos bytes para crear un archivo idéntico con diferente nombre. Para que el ejemplo funcione debe existir el primer archivo.
martes, 5 de marzo de 2013
Java: Escribir un Json
Post relacionado: Java: Leer/Escribir Json con Gson
Como ya se había mencionado en un post anterior los archivos JSON son una opción para sustituir a los archivos DOM. JSON usa una sintaxis basada en listas separadas por comas y agrupadas por llaves para manejar a los hijos dentro de las listas.
Como ya se había mencionado en un post anterior los archivos JSON son una opción para sustituir a los archivos DOM. JSON usa una sintaxis basada en listas separadas por comas y agrupadas por llaves para manejar a los hijos dentro de las listas.
Se puede observar que el método que permite agregar nuevos elementos a la lista es "put()". Este método ingresa en nombre de una variable y su valor. El valor pueden ser los tipos básicos de variables (int, long, String, etc) una lista del tipo JSONArray o un objeto del tipo JSONObject los cuales se pueden ir anidando para agregar mas niveles. Al final el código anterior creara un archivo que contendrá el siguiente JSON:
lunes, 4 de marzo de 2013
Java: Leer un Json
Post relacionado: Java: Leer/Escribir Json con Gson
Los archivos JSON son una opción para sustituir a los archivos DOM. JSON usa una sintaxis basada en listas separadas por comas y agrupadas por llaves para manejar a los hijos dentro de las listas.
En java para poder leer estos archivos existen librerías que nos facilitan el trabajo. En este caso usaremos json-simple la cual pueden descargar con este link -> librería o de la pagina de code.google.com. Para realizar la lectura simplemente basta agregar la librería (descrito este post) y usar el siguiente código para obtener la información dentro del archivo.
Los archivos JSON son una opción para sustituir a los archivos DOM. JSON usa una sintaxis basada en listas separadas por comas y agrupadas por llaves para manejar a los hijos dentro de las listas.
En java para poder leer estos archivos existen librerías que nos facilitan el trabajo. En este caso usaremos json-simple la cual pueden descargar con este link -> librería o de la pagina de code.google.com. Para realizar la lectura simplemente basta agregar la librería (descrito este post) y usar el siguiente código para obtener la información dentro del archivo.
Es importante notar que se pueden leer objetos tipo JSONObject dentro de otro del mismo tipo como un hijo, lo cual nos permite anidar información. Luego de haber ejecutado el código el resultado que obtendrán en consola sera el siguiente:
Con esta librería se debe conocer que parámetros existen dentro del archivo para mandarlos a llamar.
Para la prueba se utilizo el siguiente JSON:
sábado, 23 de febrero de 2013
Java: Codificar archivos y cadenas a Base64
En una entrada anterior (esta) se mostró una herramienta que hacia posible convertir archivos y/o cadenas a su respectivo código Base64. Para realizar esta operación ya existen librerías que permiten hacer la conversión simplemente importándola.
Tal es el caso de la librería commons-codec de Apache, la cual se puede descargar en el siguiente link o directamente de la pagina de Apache. El siguiente código muestra como realizar la codificación ya sea con archivos o cadenas.
Podemos observar que se importa la clase "org.apache.commons.codec.binary.Base64", la cual esta disponible al agregar la librería descargada. Para aprender como agregar la librería en eclipse pueden ver la siguiente entrada. El resto del código es relativamente sencillo. Convertimos el archivo o cadena a un array de bytes y se lo agregamos como parámetro al método encodeToString() de la clase Base64. Luego simplemente desplegamos el código en Base64.
jueves, 7 de febrero de 2013
Java: Operador Ternario
El operador ternario, o el if de una linea, es otra forma de evaluar una condición y devolver un valor dependiendo si la condición es falsa o verdadera. Tiene tres parámetros: Condición, valor si verdadero y valor si falso. En la siguiente linea de código se puede observar un If normal que le asigna un valor a una variable.
La forma de trasformar este if sencillo en una sentencia con operador ternario es de la siguiente forma.
La condición puede ser tan compleja como se desee, lo único que se necesita es que regrese una variable tipo boolean.
sábado, 2 de febrero de 2013
JavaFX: Abrir y Guardar Archivos
Para abrir y guardar archivos en JavaFX, simplemente usamos la clase FileChooser que sustituye al viejo JFileChooser. Esta clase esencialmente tiene dos métodos importantes que son:
showOpenDialog(Stage stage) <- Para abrir archivos showSaveDialog(Stage stage) <- Para guardar archivos
Ambos tienen un atributo "stage" que es la ventana actual de la cual fueron llamados.
showOpenDialog(Stage stage) <- Para abrir archivos showSaveDialog(Stage stage) <- Para guardar archivos
Ambos tienen un atributo "stage" que es la ventana actual de la cual fueron llamados.
La lectura y escritura de archivos sigue siendo con las clases del paquete io de java. En el siguiente código esta una clase funcional que les permite abrir/guardar y leer/escribir archivos.
lunes, 28 de enero de 2013
Convertir a Base64
Base 64 es un sistema de numeración posicional que usa 64 como base. Es la mayor potencia de dos que puede ser representada usando únicamente los caracteres imprimibles de ASCII. Esto ha propiciado su uso para codificación de correos electrónicos, PGP y otras aplicaciones. Todas las variantes famosas que se conocen con el nombre de Base64 usan el rango de caracteres A-Z, a-z y 0-9 en este orden para los primeros 62 dígitos, pero los símbolos escogidos para los últimos dos dígitos varían considerablemente de unas a otras.
Algunos ejemplos de las equivalencias que existen entre diferentes codificaciones se pueden ver ne la siguiente tabla:
En el siguiente cuadro de texto, pueden escribir una cadena o bien subir un archivo para obtener el código en Base64 correspondiente:
jueves, 24 de enero de 2013
Eclipse: Agregar Librería de Usuario
Agregar librerías de usuario es una de las diversas funcionalidades que nos ofrece Eclipse. Al configurar estas librerías es mas fácil administrar globalmente los Jars agrupándolos dentro librerías que luego pueden ser usadas en diversos proyectos.
El procedimiento es muy sencillo. Primero vamos a:
Windows -> Preferences
En la ventana que aparecerá nos dirigimos a:
Java -> Build Path -> User Libraries
Oprimimos el botón "New" el cual nos desplegara una ventana para nombrar a la nueva librería y luego ya estamos listos para agregar Jars. Simplemente elegimos Add External JARS, donde podremos elegir los Jars que se deseen agrupar en esa librería. Al final se tendrá la librería armada, la cual puede ser editada luego, y lista para usarse.
Para agregar la nueva librería de usuario a un proyecto basta con dar click derecho en el proyecto e ir a:
Build Path -> Configure Build Path..
Acá un vídeo del proceso completo:
viernes, 18 de enero de 2013
Agregar Página Web en JavaFX
En la versión 2+ de JavaFX existen elementos visuales que nos permite explorar una pagina web, estos elementos son el WebView y el WebEngine. La clase WebView nos permite visualizar un Html cargado mediante la clase WebEngine.
En el siguiente ejemplo usamos un WebView configurado para ser direccionado hacia la pagina de Google o la de Oracle.
En el script anterior simplemente usamos el metodo getEngine() del WebView para darle funcionalidad y luego podemos cargar la pagina de Oracle o Google dependiendo del botón precionado. Podemos usar google para explorar la web como normalmente lo hacemos.
Para descargar el programa funcional pueden usar este enlace: WebViewExample.jar
martes, 15 de enero de 2013
Dibujar dentro de un Google Map
El API Javascript de Google Maps permite mas que solo mostrar un mapa exprorable de cualquier parte del mundo. También ofrece un conjunto de utilidades que permiten dibujar figuras, realizar calculos, determinar lugares, etc.
En el siguiente ejemplo se demuestra el funcionamiento de los dibujos en los mapas. Lo principal es agregar la librería cuando se llama al script de google:
src="http://maps.google.com/maps/api/js?sensor=false&libraries=drawing" type="text/javascript"
El código anterior define como las opciones del mapa, descritas en el siguiente post: Agregar GoogleMap. Lo importante viene luego al definir las acciones que deseamos que el DrawingManager de Google Maps realice. Definimos la posición del panel, las posibles opciones (rectangulo esta comentado, si se descomenta permitirá usar esa opción) y lo agregamos al mapa. También se definen las propiedades que tendran las figuras disponibles.
Al final tendremos lo siguiente:
lunes, 14 de enero de 2013
Agregar GoogleMaps (v3) en una página web
Google Maps ofrece una amplia matriz de APIs que permiten al usuario insertar las funciones más completas y la utilidad diaria de mapas en un sitio web y en aplicaciones, así como agregar sus propios datos sobre ellas. Entre los APIs que ofrecen estan:
- JavaScript API
- Flash API
- Google Earth API
- Static Maps API
- Servicios Web
- Maps Data API
Para el siguiente ejemplo se usará el API de JavaScript, el cual nos permite configurar un Mapa indicando los parametros iniciales y las funciones que incluira dentro del mapa. El siguiente script se encarga de ello.
Con el codigo que se observa hacemos la llamada al script de google que maneja los mapas, luego empezamos a definir la funcion el la cual tendremos la información necesaria para incializar el mapa. Primero definimos la posición incial del mapa, luego las funciones básicas del mapa y finalmente buscamos un elemento HTML en este caso un div para agregarlo. Luego se da un lector de eventos y tenemos lo siguiente:
Un Mapa de Google que usa la configuración para ser manipulado.
Suscribirse a:
Entradas
(
Atom
)