Buscar
Social
Ofertas laborales ES
« Japplis Website Optimzer 1.0 | Main | Lo que nos va a traer Java 7, y lo que no nos va a traer »
viernes
ene162009

Puedes hacerlo mejor en "tu" lenguaje de programacion?

Esta serie de posts no está destinada a demostrar la superioridad de un lenguaje de programación sobre otro, el objetivo es encontrar la mejor manera de escribir códigos que un programador de GUIs enfrenta a diario. Cuando digo "la mejor manera", me refiero a un equilibrio adecuado entre agilidad y legibilidad, que en mi opinión, define la calidad de un lenguaje. La idea es que si conoces un lenguaje que permite mejorar la forma de codificar el fragmento mostrado aquí (seguramente que si), entonces lo publiques, para entre todos evaluar los mejores. También son bienvenidas versiones mejoradas de las que he escrito, y por supuesto, comentarios en general.

La principal razón por la que elegí JavaFX, es que francamente creo que es el lenguaje que permite ser más ágil para "programar" gráficos (hasta el momento).

Esta primera parte tiene como objetivo mostrar la forma de enlazar (binding) dos objetos, en este caso, el color de un objeto es determinada por el texto en un campo de texto. Si el texto dentro del campo de texto es 'aeiou' entonces el círculo se pinta de color verde, de lo contrario de color rojo.

Viendo la función processTheText como el "controlador", se puede notar la total separación entre la vista y la lógica.

 

 

/*
 * DoItBetter1.fx
 *
 */

package doitbetter;

import javafx.scene.control.TextBox;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;


var theText = "";

Stage {
    title: "Binding between GUI controls"
    width: 400
    height: 200
    scene: Scene {
        content: HBox {
            spacing: 10
            content: [                
                TextBox{                    
                    text: bind theText with inverse
                }
                Circle{                    
                    radius: 10 centerY: 10
                    fill: bind processTheText(theText)
                }
            ]
        }
    }
}

function processTheText(auxText){
    if(auxText == "aeiou") Color.GREEN else Color.RED
}

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.
Comentarios deshabilitados
Comentarios deshabilitados en esta noticia.