Nie cały rok temu razem z Radkiem Holewą prezentowaliśmy na warszawskim JUGu JavaFX. Dziś przedstawiam wam przykładową aplikację. Pokazuje ona podstawowe reguły składni deklaratywnej tego języka. Pod tym linkiem możecie uruchomić przykład.

Kodzimy

NB nie znam zbyt dobrze i mnie denerwuje przez to. Inne skróty klawiaturowe. Inne zasady budowania i uruchamiania projektów niż w Eclipse. Dwie rzeczy są jednak w NB naprawdę dobre. Pierwsza to edytor CSS. Na blogu czasami muszę wprowadzać drobne poprawki do layoutu więc muszę mieć taką zabawkę. NB wymiata w porównaniu z Aptana Studio i Dreamweaver’em CS3. Druga rzecz to naprawdę dobry plugin do JavaFX. Poniżej kod prostego programu, który sprawdza czy dziś mamy piątek.

Listing 1. Czy dziś jest piątek?

/*
 * Main.fx
 */

package example;

/**
 * zestaw importów. Niestety plugin słabo importuje klasy javy...
 */

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import java.util.GregorianCalendar;
import javafx.scene.paint.Color;
/**
 * @author koziolek
 */

 /**
 * <b>def</b> oznacza, że dany element jest stały. W tym przypadku pole tekstowe
 */

def myTest = Text{
    font: Font{
        size: 24;
        name: "Arial";
        oblique: true;
    }
    x: 20;
    y: 30;
    content: bind isFridayText;
    fill: Color.RED;
    stroke: Color.YELLOW;
}

/**
 * <b>var</b> oznacza, że dany element jest zmienną. W tym przypadku String.
 */

var isFridayText = "";

/**
 * Data. Nie tworzę niczego szczególnego. Taki basic of basics.
 */
var date = new GregorianCalendar();

/**
 * Sprawdzam czy dziś mamy piątek
 */
if(date.DAY_OF_WEEK == 6){
    isFridayText = "Yes! Today we have friday!!!";
}
else {
    isFridayText = "No, not yet. Just another day...";
}

/**
 * Scena główna programu. Inaczej ramka główna. Tu dzieje się akcja.
 */
Stage {
    title: "Is friday today?"
    width: 380
    height: 80
    scene: Scene {
        content: Group{
            content: [
                myTest
            ]
        }
        fill: Color.BLUE
    }
}

Jak widać dość intuicyjnie można uzyskać proste efekty. Najciekawszym elementem w tym kodzie jest słowo kluczowe bind. Powoduje ono automatyczną aktualizację danego pola jeżeli podpięty obiekt zmienił wartość. Bardzo fajne. Takich mechanizmów brakuje w javie, php i innych językach.
To dopiero początek. Sceny można animować, tworzyć własne unikalne komponenty, dodawać multimedia. Flash i Adobe AIR powinny się bać.