Uma das melhores funcionalidades do JavaFX Script (na minha opiniao) era o operador "bind".Com a mudanca da linguagem na versao 2.0 este operador foi alterado para um tipo especial de dado. Porem de grande versatilidade.Como dito no titulo do post, vamos ve-lo na pratica. Abaixo temos uma aplicacao que demonstrara algumas de suas aplicacoes.public class Properties extends Application { /** * @param args the command line arguments */ public static void main(String[] args) { Application.launch(Properties.class, args); } private Rectangle rect1; private Rectangle rect2; private Rectangle rect3; private TextBox edit1; private TextBox edit2; @Override public void start(Stage primaryStage) { primaryStage.setTitle("Hello World"); Group root = new Group(); Scene scene = new Scene(root, 300, 250, Color.LIGHTGREEN); Button btn = new Button(); btn.setLayoutX(40); btn.setLayoutY(130); btn.setText("Rectangles"); btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { TranslateTransition tt = new TranslateTransition(Duration.valueOf(3000),rect1); RotateTransition rt = new RotateTransition(Duration.valueOf(3000), rect1); tt.toXProperty().set(600); tt.toYProperty().set(500); tt.cycleCountProperty().set(3); rt.cycleCountProperty().set(3); rt.setToAngle(720); tt.autoReverseProperty().set(true); tt.play(); rt.play(); } }); Button btn1 = new Button(); btn1.setLayoutX(40); btn1.setLayoutY(150); btn1.setText("edits"); btn1.setOnAction(new EventHandler() { public void handle(ActionEvent event) { edit1.setLayoutX(100); edit1.setLayoutY(200); edit2.textProperty().bindBidirectional(edit1.textProperty()); } }); rect1 = new Rectangle(100,100); rect2 = new Rectangle(100,100); rect3 = new Rectangle(200,150,100,100); rect2.translateXProperty().bind(rect1.translateXProperty().add(rect1.widthProperty()).add(20)); rect2.layoutYProperty().bind(rect1.layoutYProperty()); rect2.rotateProperty().bind(rect1.rotateProperty().divide(2)); rect3.rotateProperty().bind(rect1.rotateProperty().multiply(2)); edit1 = new TextBox("edit1"); edit2 = new TextBox(); edit2.layoutXProperty().bind(edit1.layoutXProperty()); edit2.layoutYProperty().bind(edit1.layoutYProperty().add(edit1.heightProperty()).add(10)); root.getChildren().addAll(rect1,rect2,rect3,edit1,edit2); root.getChildren().addAll(btn,btn1); primaryStage.setScene(scene); primaryStage.setVisible(true); }}A aplicacao coloca na janela tres retangulos. O primeiro deles (rect1) receber alteracoes de posicionamento e rotacao atraves de Transition's (mais sobre eles em ).O segundo retangulo tera suas propriedades translateX, translateY e rotation acompanhando as propriedades do objeto rect1. A propriedade translateY sera companhada diretamente, ja a translateX somara tambem a largura do objeto rect1, mantendo sempre a mesma distancia entre os dois retangulos. Ja a propriedade rotation do objeto rect2 acompanhara a mesma propriedade do objeto rect1, mas numa razao da metade de sua "velocidade".Ao contrario, o objeto rect3 acompanhara a rotacao do objeto rect1, porem com o dobro de sua "velocidade".Ja os objetos edit1 e edit2 passara a acompanhar o propriedade text um do outro, atraves de um "bindBidirectional". Assim com um unico metodo acrescentamos a capacidade de acompanhamentos bidirecionais, onde as alteracoes feitas em uma propriedade refletem diretamente em outra e vice-versa.Sao exemplos simples mas demonstram a capacidade e potencialidade das classes que implementa a interface Property. Ate mais, Uno de los principales componentes visuales incorporados en JavaFX 2.0 (1.3 estaba en la vista previa) fue el TableView.Que ofrece un gran apoyo en la presentacion de los datos en formato de tabla, a partir de un estandar de rendimiento para una personalizacion completa de cada celda.Al principio hay que tener en cuenta que una tabla esta formada por filas y columnas, y cada interseccion que forman una celda.Por definicion, un JavaFX TableView tiene la fuente de datos para su formacion un ObservableList de objecto con una estructura especifica, que yo llamo la frecuencia JavaFxBean. A JavaFxBean tiene una estrecha estructura de JavaBeans, pero sus atributos son descendientes (extensiones) de la interfaz javafx.beans.Property (StringProperty, IntegerProperty, BooleanProperty, OBJECTPROPERTY). De acuerdo con la documentacion de la API 2.0 que tiene este formato:public class Person {private StringProperty firstName;public void setFirstName(String value) { firstName.set(value); }public String getFirstName() { return firstName.get(); }public StringProperty