feed twitter facebook LinkedIn facebook

Java » Hola mundo con JavaFX

febrero 24, 2014 por ARIEL 5 Comentarios Imprimir Imprimir

En está ocasión vamos a usar la tecnología JavaFX para crear el ejemplo de Hola mundo con JavaFX, esta aplicación abrirá una ventana que muestra el clásico mensaje "Hola, mundo".

JavaFX es una tecnología que nos permite crear aplicaciones de escritorio RIA (Ritch Internet Applications)

Vamos a usar IntelliJ IDEA para crear el proyecto Hola Mundo con JavaFX.

Para ello elegimos New Project -> JavaFX Application:

IntelliJ

Lo primero será explicar los tres conceptos que tiene JavaFX:

  • El Escenario, que es representado por la clase Stage. El escenario es el representa al contenedor general de JavaFX.
  • La escena, es representada por la clase Scene y es la que tiene el contenido de lo que queremos representar. La escena, por lógica se monta sobre el escenario.
  • Los nodos de la escena, son los elementos que componen la escena. La clase superior que representa estos nodos es un Panel, en este caso vamos a utilizar un StackPane

Vamos a montar nuestro escenario del Hola Mundo con JavaFX, desde los nodos hasta la escena...

Crear un botón que nos salude

Lo primero que haremos será crear un botón que sea el que muestre el saludo. Para crear un botón escribiremos el siguiente código.

  1. Button boton = new Button("Saludar");
  2. boton.setVisible(true);
  3. boton.setOnAction(new EventHandler<ActionEvent>() {
  4. public void handle(ActionEvent event) {
  5. System.out.println("Hola Mundo!!!");
  6. }
  7. });

Como podemos ver es una simple clase Button, a la cual le hemos asociado un manejador mediante un EventHandler. Dicho EventHandler va a mostrar un saludo por consola.

El Panel Principal

Como hemos dicho hay que crear un nodo principal que será un Panel. En este caso es un StackPane.

  1. panel = new StackPane();

Sobre el Panel vamos a añadir el botón:

  1. panel.getChildren().add(boton);

Montando la escena

La escena es la que contiene a los nodos. Así que el montado de la Escena en JavaFX no deja de ser el añadirle los nodos.

  1. Scene escena = new Scene(panel, 250, 150, Color.BLACK);

Subir la escena, al escenario

Si ya tenemos la escena, solo nos queda subir la escena al escenario y mostrar el escenario

  1. primaryStage.setTitle("Iniciando con Java FX");
  2. primaryStage.setScene(escena);
  3. primaryStage.show();

Ahora veremos que el escenario es un atributo del método start, método básico en el desarrollo de aplicciones JavaFX.

Algunas cosas básicas más...

Antes de montar la aplicación Hola Mundo con JavaFX tiene que saber un par de cosas más sobre esta tecnología.

La primera es que la aplicación extiende de la clase Application

  1. public class Main extends Application {...}

Y lo segundo es, que el método principal es start, el cual recibe como parámetro el escenario, es decir la clase Stage.

  1. public class Main extends Application {
  2. @Override
  3. public void start(Stage primaryStage) throws Exception{
  4. ...
  5. }
  6. }

Espero que os haya sido útil la explicación de como realizar un Hola Mundo con JavaFX.

XML » Atributos con valores fijos en XML

febrero 22, 2014 por xhrist14n 1 Comentario Imprimir Imprimir

Dentro de un DTD definiremos como queremos que sea nuestro documento y la estructura que va a tener. Cuando estemos trabajando con elementos y atributos una de las cosas que podemos hacer es definir atributos con valores fijos en XML. Es decir, que solo podrán contener un valor.

Para definir un atributo dentro de un DTD vamos a utilizar la siguiente estructura:

  1. <!ATTLIST element-name attribute-name attribute-type>

En el caso de utilizar atributos con valores fijos en XML vamos a utilizar el modificador #FIXED, al cual añadiremos, a continuación, el valor fijo que queremos asignar al atributo.

  1. <!ATTLIST element-name attribute-name attribute-type #FIXED "value">

De esta forma podemos definir un elemento solicitud, al cual le vamos a crear un atributo fijo llamado empresa, el cual tendrá un valor fijo de "MongoDB". El código que tenemos que añadir a nuestro DTD será el siguiente:

  1. <!ATTLIST solicitud empresa CDATA #FIXED "MongoDB">

De esta forma, cuando lo utilicemos en un documento XML deberemos de escribir el siguiente código:

  1. <solicitud empresa="MongoDB" />

Ya que si escribimos, por ejemplo, este otro:

  1. <solicitud empresa="Oracle" />

El resultado que vamos a obtener es el de un documento XML inválido.

Ya hemos visto lo sencillo que es construir un DTD en el cual añadamos atributos con valores fijos en XML.

XML » Definir una lista de valores en atributo XML

febrero 20, 2014 por xhrist14n Sin Comentarios Imprimir Imprimir

Cuando estamos definiendo un atributo dentro de un DTD podemos hacer que los valores del atributo sean una lista de valores. Así podemos definir una lista de valores en atributo XML para que el usuario no se salga de este listado de valores.

Para definir un atributo sobre un elemento vamos a necesitar conocer las siguientes dos estructuras:

  1. <!ELEMENT element-name element-type>
  2. <!ATTLIST element-name attribute-name attribute-type>

Si queremos una lista de valores en atributo XML deberemos de seguir la siguiente estructura:

  1. <!ATTLIST element-name attribute-name (en1|en2|..) default-value>

Vemos que se indican los valores de la lista entre paréntesis separados por barras.

Para representarlo vamos a modelar un elemento que sea un pago bancario:

  1. <!ELEMENT payment>

Este elemento va a tener un atributo que sea el tipo de pago, para lo cual utilizaremos el atributo "type". El tipo de pago podrá ser:

  • cash, para pagos en moneda.
  • card, para pagos con tarjeta
  • check, para los pagos con cheques.

Así, la definición de la lista de valores en atributo XML se hará de la siguiente forma:

  1. <!ATTLIST payment type (card|check|cash) "cash">

Cuando estemos utilizando el DTD que contenga esta definición podremos tener documentos xmL que sean válidos como el siguiente:

  1. <payment type="check" />

Ya que el valor que le hemos asignado uno de los valores que estaba en la lista.

O documento XML que no san válidos como:

  1. <payment type="paypal" />

En este caso el valor que le hemos asignado al atributo no estaba contemplado en la lista, por lo cual no será un documento XML válido.

Ya hemos visto como crear listas de valores en atributos XML de una forma sencilla.

XML » Atributo no obligatorio en XML

febrero 18, 2014 por xhrist14n Sin Comentarios Imprimir Imprimir

Ya hemos visto como podemos definir un atributo obligatorio en XML dentro de un DTD. Ahora vamos a ver como podemos definir un atributo no obligatorio en XML. Los pasos son iguales, solo que en este caso vamos a utilizar el demarcador #IMPLIED.

Pero vamos por pasos. Lo primero, definir nuestro elemento XML atendiendo a la estructura:

  1. <!ELEMENT nombreelemento EMPTY>

Nuestro elemento XML contacto se definirá de la siguiente forma:

  1. <!ELEMENT contacto EMPTY>

Ahora vamos a crear un atributo para el elemento "contacto". En este caso vamos a crear el atributo "fax". La estructura para crear el atributo será la siguiente:

  1. <!ATTLIST element-name attribute-name attribute-type>

Por lo tanto nuestro atributo "fax" se definirá así:

  1. <!ATTLIST contact fax CDATA>

Lo siguiente será manejar la clausula #IMPLIED que ya habíamos comentado al principio. Esta se indica después del tipo de atributo, siguiendo la siguiente estructura:

  1. <!ATTLIST element-name attribute-name attribute-type #IMPLIED>

Para conseguir que el atributo fax sea un atributo no obligatorio en XML lo escribiremos de la siguiente forma:

  1. <!ATTLIST contact fax CDATA #IMPLIED>

Cuando estemos creando nuestro documento XML atendiendo a un DTD que tenga atributos no obligatorios XML como el que acabamos de definir nos encontraremos que tanto:

  1. <contact fax="555-667788" />

Como:

  1. <contact />

Son elementos que hacen que el documento XML sea válido.

XML » Definir un atributo obligatorio en XML

febrero 16, 2014 por xhrist14n 2 Comentarios Imprimir Imprimir

Cuando estamos creando nuestras definiciones de tipo de documento o DTD para el uso de los ficheros XML podemos tratar de definir un atributo obligatorio en XML. La idea es definir un atributo que siempre tenga que aparecer en el elemento.

Lo primero será tener un elemento. En este caso un elemento sin contenido:

  1. <!ELEMENT nombreelemento EMPTY>

Por ejemplo vamos a definir el elemento persona:

  1. <!ELEMENT persona EMPTY>

Lo siguiente será definir el atributo, por ejemplo el número de la persona. En este caso utilizamos la definición ATTLIST que tiene la siguiente estructura:

  1. <!ATTLIST element-name attribute-name attribute-type>

Así tendremos el atributo número de la persona definido de la siguiente forma:

  1. <!ATTLIST persona numero CDATA>

Si lo que queremos es definir un atributo obligatorio en XML deberemos de añadirle la clausula #REQUIRED.

Ahora la estructura sería:

  1. <!ATTLIST element-name attribute-name attribute-type #REQUIRED>

Y nuestro elemento persona con el atributo número de persona obligatorio se escribiría:

  1. <!ATTLIST persona numero CDATA #REQUIRED>

Cuando estemos definiendo nuestro documento XML atendiendo a este DTD que tiene un atributo obligatorio veremos que será un documento XML válido:

  1. <persona numero="5677" />

Y será un documento XML invalido:

  1. <persona />

Ya hemos visto como definir un atributo obligatorio en XML mediante la clausula #REQUIRED.

XML » Atributo con valor por defecto en XML

febrero 14, 2014 por xhrist14n 1 Comentario Imprimir Imprimir

Cuando definimos un atributo XML dentro de un DTD podemos hacer que el atributo tenga un valor por defecto en XML.

Lo primero es recordar que para definir un atributo XML:

  1. <!ATTLIST element-name attribute-name attribute-type default-value>

Donde tenemos el elemento sobre el que queremos definir el atributo, el nombre y tipo del atributo, y por último el valor por defecto.

Así podríamos definir el siguiente DTD con un atributo con valor por defecto en XML:

  1. <!ELEMENT square EMPTY>
  2. <!ATTLIST square width CDATA "0">

Hemos creado un atributo width, sobre un elemento square, del tipo CDATA y cuyo valor por defecto en XML será "0".

De esta forma podríamos crear el siguiente XML válido:

  1. <square width="100" />

En este ejemplo, el elemento “square" esta definido para ser un elemento vacío con un atributo “width" de tipo CDATA. Si no se asigna un atributo width, el valor por defecto en XML será 0.

Como podéis ver es muy sencillo el definir un atributo con un valor por defecto en XML.

XML » Definir atributos en XML DTD

febrero 12, 2014 por xhrist14n 1 Comentario Imprimir Imprimir

Siguiendo con XML, tomamos ahora el tema de definir atributos en XML DTD los cuales son útiles para poder tener atributos a usar en las etiquetas XML.

Lo primero que se necesita para poder usar atributos en XML DTD dentro de nuestras etiquetas XML es definir estos atributos en ATTLIST en nuestro archivo de definición de etiquetas XML, para conseguir esto debemos seguir el formato adecuado para declaración de atributos XML:

  1. <!ATTLIST element-name attribute-name attribute-type default-value>

Donde se denota ATTLIST como palabra clave de definición de atributos luego el nombre del elemento en el cual se generaran los atributos, luego todo esto se completa con el nombre del atributo a generarse, un tipo de atributo y un valor por defecto a asignarse automáticamente en caso de no tener ningún valor definido para el atributo.

Tipos de atributo XML

Los tipos de atributo XML que se puede usar en un DTD son los siguientes:

Tipo Descripción
CDATA El valor es una cadena de caracteres
(en1|en2|..) El valor debe ser uno de los enumerados en la lista
ID El valor es un ID único
IDREF El valor es el id de otro elemento
IDREFS El valor es uno de la lista de los otros ids
NMTOKEN El valor es un nombre XML valido
NMTOKENS El valor es una lista de los nombres XML validos
ENTITY El valor es una entidad
ENTITIES El valor es una lista de entidades
NOTATION El valor es un nombre de una notación
xml: El valor es un valor xml predefinido

El valor por defecto puede ser uno de estos:

valor explicación
valor El valor por defecto del atributo
#REQUIRED El atributo es requerido
#IMPLIED El atributo no es requerido
#FIXED valor El valor del atributo es fijo

Ejemplo de atributos en XML DTD

Un ejemplo puede ser el siguiente:

  1. <!ATTLIST payment type CDATA "check">

Lo que estamos diciendo es que el elemento payment, tiene un atributo llamado type del tipo CDATA y cuyo valor por defecto es "check".

Podemos indicar que el atributo sea obligatorio, en este caso tendríamos que escribir lo siguiente:

  1. <!ATTLIST payment type CDATA #REQUIRED "check">

Si queremos utilizar el atributo en un documento XML sería de la siguiente forma:

  1. <payment type="check" />

Groovy » Crear una clase en Groovy

febrero 10, 2014 por ARIEL Sin Comentarios Imprimir Imprimir

En esta ocasión crearemos una clase en Groovy, al igual que en Java se debe usar la palabra class.

Clase en Groovy

  1. class Computadora{
  2. ...
  3. ...
  4. }

Nuestra clase en Groovy tendrá dos atributos:

  1. String marca
  2. String modelo

Por defecto estos atributos serán accesibles desde cualquier otra clase en Groovy. Si quiero crear otra clase en Groovy que acceda a esos atributos tengo que usar la palabra extends.

  1. class Computadora_Portatil extends Computadora{
  2. ...
  3. ...
  4. }

A esta nueva clase en Groovy le coloco otros dos atributos:

  1. String memoria
  2. String procesado

El código de ambas clases en Groovy quedaría de la siguiente forma:

  1. //clase base
  2. class Computadora{
  3. String marca
  4. String modelo
  5. }
  6.  
  7. //clase hija
  8. class Computadora_Portatil extends Computadora{
  9. String memoria
  10. String procesador
  11. }

Constructor de una clase en Groovy

Podemos crear un constructor para cada clase en Groovy:

  1. //clase base
  2. class Computadora{
  3. //constructor
  4. Computadora(){}
  5. }
  6.  
  7. //clase hija
  8. class Computadora_Portatil extends Computadora{
  9. //constructor
  10. Computadora_Portatil(){}
  11. }

Método main de una clase en Groovy

Ahora escribimos el "main" de nuestra clase en Groovy:

  1. static main(args){
  2. //nota: no es necesario
  3. }

Instancia de una clase en Groovy

  1. static main(args){
  2. def miPC=new Computadora()
  3. }

También podemos hacerlo de esta forma:

  1. static main(args){
  2. def miPC= new Computadora(marca:"DELL",modelo:"1501")
  3.  
  4. //mostramos los valores
  5. println "Mi PC:"
  6. println "marca >> ${miPC.marca} , modelo >> ${miPC.modelo}"
  7.  
  8. }

Existe también la alternativa de usar la palabra with para llenar los atributos de la clase en Groovy:

  1. static main(args){
  2. //en este caso usamos la clase hija
  3. def miPortatil=new Computadora_Portatil()
  4. miPortatil.with{
  5. memoria="1.7GiB"
  6. procesador="AMD V120 Processor"
  7. }
  8.  
  9. //mostramos los valores
  10. println "Mi PC portatil:"
  11. println "memoria >> ${miPortatil.memoria} , procesador >> ${miPortatil.procesador}"
  12.  
  13. }

Espero que os haya gustado el artículo sobre cómo crear una clase en Groovy.

Conversación » Conversaciones sobre Programación. Build 2014.02

febrero 10, 2014 por Víctor Cuervo 1 Comentario Imprimir Imprimir

Segundo resumen de nuestros grupos de conversaciones sobre programación. Su "nombre de guerra" Build 2014.02. Un buen puñado de enlaces sobre Java, Javascript, HTML5,... por tener hasta tenemos un vídeo sobre como montar CGIs en Perl.

Queremos resaltar el trabajo del Blog return(GiS); por la cantidad y la calidad de los enlaces que se comparten en los grupos. Nos alegra mucho encontrar blog de programación en español de tanta calidad como return(GiS);

Por favor, leer y comentar a la gente que hay una serie de normas de comportamiento para los grupos de conversaciones sobre programación que se deben de acatar.

Aunque hace mucho que no creamos un grupo de conversación nuevo, ya tenemos unos cuantos. En breve tendremos algunas novedades.

Las cosas interesantes que hemos visto en los grupos de conversaciones sobre programación son:

Si quieres que tu enlace esté aquí, solo tienes que crear contenido de calidad, compartirlo en los grupos de conversación o indicarlo en los comentarios.

Y hoy nos despedimos con un poco de amor informático...

amor_informatico

Más en el próximo resumen. Mientras, seguir utilizando los grupos de conversación.

MongoDB » MongoDB Skip: Omitir resultados

febrero 9, 2014 por Víctor Cuervo 1 Comentario Imprimir Imprimir

Cuando realizamos una consulta MongoDB Find, esta, nos devuelve el conjunto de documentos que cumplen la búsqueda. Si bien, mediante MongoDB Skip podemos omitir resultados y no recuperar ciertos documentos.

Pero vamos por pasos. Lo primero será realizar una consulta:

  1. db.coleccion.find(filtro);

A esta consulta con el método .find() le podemos añadir el método MongoDB Skip.

La sintaxis del método MongoDB Skip es muy sencilla:

  1. db.coleccion.find(filtro).skip(numero_elementos);

Lo que le pasamos como parámetro al método MongoDB Skip es el número de elementos que queremos omitir antes de devolver el contenido.

El método MongoDB Skip puede ser costoso ya que aunque omitamos los documentos, estos están siendo leidos de la base de datos, con su consecuente coste. Así que intenta siempre acceder a los documentos acotados que necesites.

Así que si al realizar una consulta sobre nuestra colección de ciudades, si queremos omitir dos elementos escribiremos lo siguiente:

  1. cursor = db.ciudades.find().skip(2);

Al recorrer el cursor veremos que los dos primeros documentos que cumplan el filtro (en este caso, todos los documentos), no aparecen.

  1. while (cursor.hasNext()){
  2. printjson(cursor.next());
  3. }

Muy sencillo el uso del método MongoDB Skip para omitir documentos en las consultas.