Javowe FiXowanie

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
 */

 /**
 * def 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;
}

/**
 * var 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ć.

6 myśli na temat “Javowe FiXowanie

  1. Czy na pewno piątek tma numer 6? Bo dziś jakby nie patrzeć piątek od samego rana a applet uparcie wmawia mi, że „No, not yet. Just another day…”

  2. Się powinno zgadzać. Co ciekawe używam tu klasy javowej, która mówi, że dziś mamy sobotę! Coś się spieprzyło w GregorianCalendar!
    Sprawdź:

    import java.util.GregorianCalendar;
    import java.util.TimeZone;
    
    /**
     *
     * @author koziolek
     */
    public class Main {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            GregorianCalendar date = new GregorianCalendar();
            date.setTimeZone(TimeZone.getTimeZone("GMT-1"));
            System.out.println(date.DAY_OF_WEEK);
            System.out.println(date.FRIDAY);
        }
    
    }
  3. Ciekawe czy Joda Time (bardzo fajna biblioteka do obsług dat, czasu) tez będze lednie pokazywac.

    A zbaczajac jeszcze bardziej z tematu to zauwazylem dziwna rzecz podczas testowania Ubuntu z LiveCD. Mianowicie wchodzac na twojego bloga od razu wyskakuje komunikat o potrzebie zainstalowania najnowszej javy, potem nastepny podobnej tresci i czy chce czy nie jestem natychmiast przekierowywany na strone pobierania Javy. Po zainstalowaniu proponowanych przez Firefoxa pluginow (bodajze GCJ) Java w firefoxi dziala (jako 1.5.0) ale nadal na twojej stronie automatycznie przekierowuje. Na szybko szukajac nie znalazlem innych stron z embedowanymi appletami JavaFX, wiec nie wiem czy cos sam dodales sprawdzajacego wersje Javy, czy to te applety takie wredne. Tak czy siak bloga poczytac sie nie da.
    Na walke z sunowskim pluginem javy dla przegladarek walczyc bede juz po zainstalowaniu systemu (a chyba bedzie z tym troche zabawy bo wersja dla 64bitow jest dopiero w 6u12beta), wiec nie jestem w stanie powiedziec na ile jego instalacja pomoze.
    Na szczescie elinks olewa Jave i moge spokojnie przejrzec strone 🙂

  4. Jak budujesz projekt w NB to tworzony jest taki szablon HTML z którego należy skopiować kod. Zawiera on link do takiego magicznego skryptu suna, który sprawdza co trzeba.
    Co do tego wołania to jest to jakiś dziwny bug w tym skrypcie. Zgłosił już to ktoś chyba. Zresztą JavaFX jest jeszcze w powijakach i będzie więcej takich ciekawostek.

Napisz odpowiedź

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax