blog de rodrigo salado anaya

Guía de referencia JavaFX Script.

El por qué de esta guía.
Las principales motivaciones son crear documentación en español, generar retroalimentación y provocar el entusiasmo sobre la tecnología JavaFX.

Aclaraciones.
Debo comentar que todo el contenido de esta guía es una recopilación de foros, blogs, manuales, etcétera de entusiastas y profesionales en la materia.
El material está incompleto. Conforme recopile, compile y estudie los siguientes temas se irán agregando al archivo en PDF que esta adjunto a esta liga.
http://javamexico.org/system/files/Gu%C3%ADa+de+referencia+JavaFX+Script...
El desarrollo de esta guía es una interpretación de mis experiencias con JavaFX, are mi mejor esfuerzo por no caer en el copy/paste.

Agradecimiento.
Agradezco de esta manera tan informal a todos los que participen de manera directa o indirecta en este proyecto y estoy completamente abierto a todo tipo de críticas, aportaciones, aclaraciones y hasta en exigencias en cierto tipo de temas.

Ejemplo de Phys2d & JavaFX.

Voy a describir un ejemplo (un hola mundo en Phys2d) del uso de la librería Phys2d y JavaFX, revisa los demos, documentación y de que se trata en: http://www.cokeandcode.com/phys2d/

Para JavaFX: JAVA_HOME, PATH en Ubuntu 10.04 (Linux/GNU)

Que raro, pero muchas veces para algunos es un problema muy fastidioso el poner la variable de entorno 'JAVA_HOME', como un amigo y yo nos acabamos de instalar un Ubuntu 10.04, NetBeans 6.9 RC con soporte para JavaFX 1.3, en donde al tratar de correr una aplicación (solo de JFX) aparece el siguiente mensaje 'Error: JAVA_HOME is not defined, cannot find "java" command.'. Entonces me pidió que le ayudara en eso, hay varias formas de hacerlo, suelo ocupar el siguiente método en Ubuntu:

En una terminal:

sudo gedit /etc/profile

Al final pongo (ojo con el PATH, tambien agrego el javafx-sdk):

export JAVA_HOME=/usr/local/java/jdk1.6.0_20
export JAVAFX_HOME=/home/rodrigo/netbeans-6.9rc1/javafx/javafx-sdk
export PATH=$PATH:$JAVA_HOME/bin:$JAVAFX_HOME/bin

Salimos del editor y:

sudo source /etc/profile

Nota: Si no jala :P con reiniciar (init 6) bastaría.

¿Saben otra forma?

Ejemplo de calendario en JavaFX

No tenia mucho que hacer y vi que Java 7 trae un calendario (Swing), muy bonito, a mi gusto. En la noche tuve un poco de tiempo y quise crear el mio con JavaFX, pues aquí se los dejo y si lo pueden mejorar, pues agradecería enormemente lo compartieran.

Si tienes consejos, sugerencias, dudas, etc. me dices ok... :P

FechaItem: Esta clase es la unidad de una fecha en un mes de un año (jajajaja). Como atributo publico obtiene un objeto tipo Date. Deje un evento de tipo onMouseClicked para ejemplificar donde pones código para meterlo en una base de datos o lo que se le antoje, en este caso solo cambia de color y te dice por consola que día pinchaste y si esta libre o con cita.

package calendarfx;

import javafx.scene.CustomNode;
import javafx.scene.Group;
import javafx.scene.Node;
import java.util.Date;
import javafx.scene.paint.Color;
import java.util.Calendar;
import javafx.scene.control.Label;
import javafx.scene.shape.Rectangle;
import java.util.GregorianCalendar;
import javafx.scene.layout.Panel;
import javafx.scene.input.MouseEvent;

/**
 * @author Rodrigo Salado Anaya
 */

public class FechaItem extends CustomNode {

Hola mundo en JavaFX, por pasos.. (Deprecado)

El propósito de este post es mostrar la manera de crear una especie de 'hola mundo' en la tecnología JavaFX.
Es solo una introducción, en esta liga esta todo lo que escribo aquí: http://javafx.com/learn/

0.
Cómo?:
Declarar variables y constantes:

var variable:Tipo = Valor;
def constante:Tipo = Valor;

Definir una clase:

class NombreClase{
}

Definir funciones:

function nombreDeLaFuncion(valor:TipoDeIngreso):TipoDeRetorno{
        ;
}

Imprimir una linea de texto en consola:

def a:Number = 2.0;
def b: Number = 2.3;
def r:Number = a + b;
println("La suma de {a}+{b} es {r}");
//salida en consola
La suma de 2.0+2.3 es 4.3

Pasar datos a un objeto JavaFX:
Supongamos una clase

class NombreClase {
    var a: Number;
    var b: Number;
}

y tubienramos una variable de tipo NombreClase, de esta manera:

var variable:NombreClase;

podemos asignar valores a los atributos de la siguiente manera:

var variable: NombreClase = NombreClase {a: 23.3 b: 56.65 };

o tambien:

var variable: NombreClase = NombreClase {};

No Need for Setters and Constructors in Compiled JavaFX Script

Tome el ejemplo de la pagina http://learnjavafx.typepad.com/, exactamente de: http://learnjavafx.typepad.com/weblog/2007/12/compiled-java-1.html

Lo único que hice fue pasarlo a la versión 1.2 de JavaFX, digo no es un gran a porte pero, demuestra claramente la utilidad... por favor lee el articulo original para mas información.

Gracias a Jim Weaver.

/*
 *  TriggersAndPostinit.fx - Example of using a replace trigger
 *                           to eliminate the need for a setter,
 *                           and a postinit block for some
 *                           constructor-related functionality
 *
 *  Developed 2007 by James L. Weaver (jim.weaver at lat-inc.com) 'original'
 */

class Vehicle {

    /*atributos*/
    var sporty: Boolean;
    var model: String;
    var numWheels: Integer = 4 on replace oldValue {
                if (numWheels <= 0) {
                    println("{numWheels} wheels not valid, changing to {oldValue}!");
                    numWheels = oldValue;
                }
            };

    /*init not post init*/
    init {
        if (numWheels == 18 and sporty) {

Aportación Java México - PCJ - Tabla fácil en JavaFX

Esto es un pequeño ejemplo de como crear una tabla de manera sencilla en la tecnología JavaFX.

¿Esto por qué? Es una de las cosas que más se necesitan en programas sencillos, y resulta algo difícil de encontrar documentación o ejemplos de como crear una tabla con scroll y que responda a eventos del ratón.

Trate en este mismo ejemplo de poner muchas de las características importantes de la tecnología JavaFX, como 'bind', 'CustomNode', como usar un 'for' para regresar un matriz, como asignar datos en un 'for', como eliminar de una secuencia un elemento 'Node', si se le da click a una fila esta desaparece... como implementar un scroll, como usar un 'VBox' y un 'HBox', como usar un 'Group'... bueno en resumen creo que cubre muchas de las necesidades de un ejemplo muy completo de JavaFX.

package tablafx;

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.ScrollBar;
import javafx.scene.Group;

/**
 * @author Rodrigo Salado Anaya
 */

/*nombres de la tabla*/
var nombres = ['luis', 'mago', 'lobo', 'musha', 'rodrigo'];
/*grupos*/

Javassist, Micro ejemplo...

Este es un ejemplo micro de lo que puede hacer Javassist, aquí se ve mas claro los alcances de esta librería:
http://www.javamexico.org/blogs/ezamudio/modificacion_de_codigo_con_java...
http://www.javamexico.org/blogs/ezamudio/transformacion_de_clases_al_vue...

Este trascrito esta basado por completo de la pagina del proyecto:
http://www.csg.is.titech.ac.jp/~chiba/javassist/

El día de la 1ra reunión informal de la comunidad javamexico.org, se platicaron muchas cosas "muy rudas" :D, y me quede mucho con la idea de esta librería, primero se me ocurrió que podía ser implementada con fines de seguridad algo de criptografía, o usarla para dejar rastro de su estado al pasar por varios servidores, bueno, cosas por el estilo. Luego el fin de semana pasado, me la pase estudiando mas el tema, no encontré mucha información, eso fue una lastima.
Pero recapacite y que mas documentación necesito si puedo estudiar el código fuente... :( (algo que probablemente me lleve muchisisismo tiempo).

Así que divague en los usos, uno que me gusta imaginar es el de código evolutivo, como es esto según yo...

Divertido? seguro que si.

Muchas veces no tengo una revista interesante que leer o Internet a mi alcance, así que me hago de una copia (electrónica o física) de alguno de estos artículos, muchos por no decir todos, son noventeros, muchos de los artículos no los puedo entender, pero es interesante ver los trabajos de los alumnos de muchas Universidades importantes...

Solo quiero compartir esto con ustedes... del lado derecho esta un icono para descargar los archivos en pdf o ps.

Saludos a todos.

http://citeseerx.ist.psu.edu/

http://citeseerx.ist.psu.edu/search?q=java&submit=Search&sort=rel

y

http://arxiv.org/

http://arxiv.org/find/all/1/all:+java/0/1/0/all/0/1

Solo fotos.

http://cdsweb.cern.ch/record/1249762

JavaFx y Binding...

Este es un pequeño ejemplo de como usar una de las propiedades mas poderosas de JavaFX. Aquí explica todo lo necesario
http://java.sun.com/javafx/1/tutorials/core/dataBinding/

En el ejemplo se dibuja un cuadrado, que se puede mover por el escenario.

/*
 * Main.fx
 *
 * Created on 21/03/2010, 02:14:57 PM
 */

package cuadrado;

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.CustomNode;
import javafx.scene.Node;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;

/**
 * @author Rodrigo Salado Anaya
 */

Stage { //Inicio de la aplicacion
    title: "Usando BINDING en JavaFx" //titulo de la apicacion
    scene: Scene { //escenario de la aplicacion
        width: 800 //alto del ecenario
        height: 800 //ancho del ecenario
        content: [Ventana { }] //Aquí es donde ponemos el nodo
    }
}

class Ventana extends CustomNode {

    var x: Number = 0.0; //posicion en x inicial
    var y: Number = 0.0; //posicion en y inicial
    var posicionX: Number = 0.0; //posicion x del cursor
    var posicionY: Number = 0.0; //posicion y del cursor
    var cuadrado = Rectangle { //recangulo

Distribuir contenido