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
                /**
                 * atamos la posicion (x,y) del cuadrado con las variables
                 * x, y.
                 * esto esta padrisimo no creen! en caliente se cambia... jit.
                 */

                x: bind x //posicion x del cuadrado
                y: bind y //"      " y ...
                width: 200 //alto del cuadrado
                height: 200 //ancho del cuadrado
                fill: Color.WHITESMOKE //color del cuadrado
                onMousePressed: function (e) {//evento del mouse al presionar
                    /**
                     * obtengo la posicion (x,y) del cuadrado y la guardo
                     */

                    posicionX = x;
                    posicionY = y;
                }
                onMouseDragged: function (e) {//evento mouse al arrastrar
                    /**
                     * el valor de x y y, seran igual a la suma
                     * de la posicion guardada, con la posicion (x, y)
                     * del cursor. o algo asi jijiji
                     * x y y, van a cambiar de valor y por lo tanto
                     * tambien la pocion del cuadrado.
                     * tambien se puede con un translateX, translateY
                     * pero eso es otra onda va ;)
                     */

                    x = posicionX + e.dragX;
                    y = posicionY + e.dragY;
                }
            }//fin del rectangulo

    public override function create(): Node {//funcino sobreescrita que genera
        ///el nodo
        /**
         * no es necesario un 'return', algo muy cool de javafx
         * es que casi todo puede regresar una respuesta..
         * voy a releer el articulo y les cuento luego como esta esta onda va..
         */

        cuadrado;
    }
}

AdjuntoTamaño
javafx-1-3-3d.jpg22.25 KB