2012-01-24

Hallo Welt

Sie erinnern sich sicher, dass ich die Euphorie des Java Magazins bzgl. JavaFX 2.0 nicht 100% geteilt habe. Das bedeutet aber natürlich nicht, dass man sich diese Technologie nicht ansehen sollte – im Gegenteil. Heute also ein klein wenig Abwechslung. Kein Swing, kein Android, sondern RIA.

Oracle bietet JavaFX in den unterschiedlichsten Paketen an, Huckepack mit dem JDK 7, als Bundle mit NetBeans oder als “einfaches” SDK. Um nur etwas mit JavaFX zu spielen, sollten Sie diese Variante wählen. Laden Sie von Oracles Download-Seite das JavaFX SDK herunter und folgen den wenigen Schritten des Installationsassistenten.

JavaFX SDK 2.0 Installationsassistent
JavaFX SDK 2.0 Installationsassistent

Nachdem die Installation abgeschlossen wurde, finden Sie unter C:\Program Files\Oracle (bzw. den von Ihnen gewählten Pfad) die beiden Verzeichnisse JavaFX 2.0 Runtime und JavaFX 2.0 SDK. Uns interessiert das SDK, insbesondere der Unterordner rt. Er enthält bin und lib. Letzteres beherbergt die Datei jfxrt.jar, ersteres einige .dlls. Um eine JavaFX 2.0-Anwendung zu bauen, müssen Sie nur das .jar-Archiv dem Klassenpfad hinzufügen und sicherstellen, dass die nativen Bibliotheken geladen werden können.

Unter Eclipse machen Sie diese Einstellungen auf der Registerkarte Libraries der Seite Java Build Path des Projekteigenschaften-Dialogs eines ganz normalen Java-Projekts. Sie erreichen sie durch Rechtsklick auf die Projektwurzel im Package Explorer und Auswahl des Menüpunks Build Path • Configure Build Path. Klicken Sie auf Add External JARs und suchen jfxrt.jar. Markieren Sie Native library location und klicken anschließend auf Edit. Mit External Folder öffnen Sie die Ordnerauswahl, in der Sie das weiter oben angesprochene bin-Verzeichnis mit den nativen Bibliotheken suchen und auswählen müssen. In einem letzten Schritt sollten Sie noch das Verzeichnis mit der API-Dokumentation setzen. Klicken Sie hierzu auf Javadoc location und anschließend erneut auf Edit. Sie benötigen den Unterordner api des doc-Verzeichnisses. Bei mir lautet der Pfad C:\Program Files\Oracle\JavaFX 2.0 SDK\docs\api.

Der Projekteigenschaften unter Eclipse mit dem Java Build Path
Der Projekteigenschaften unter Eclipse mit dem Java Build Path

Fügen Sie Ihrem auf diese Weise konfigurierten Java-Projekt die folgende Klasse HelloWorld hinzu:

import javafx.application.Application;
import javafx.geometry.VPos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.Reflection;
import javafx.scene.paint.Color;
import javafx.scene.paint.CycleMethod;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
import javafx.scene.shape.StrokeType;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class HalloWelt extends Application {

  public static void main(String[] args) {
    launch(args);
  }

  @Override
  public void start(Stage primaryStage) throws Exception {
    primaryStage.setTitle("Hallo Welt");
    Group group = new Group();
    Scene scene = new Scene(group);
    // anzuzeigender Text...
    Text text = new Text("Hallo Welt!");
    text.setTextOrigin(VPos.TOP);
    // Font
    text.setFont(new Font(72));
    // anzeigen
    group.getChildren().add(text);
    primaryStage.setScene(scene);
    primaryStage.show();
  }
}

Wenn Sie das Programm starten, erscheint folgendes Fenster:

Hallo Welt-Basisversion
Hallo Welt-Basisversion

Fügen Sie vor dem Kommentar // anzeigen die folgenden Zeilen ein:

    // Effekt
    text.setEffect(new Reflection());

Hallo Welt mit einer Spiegelung als Effekt
Hallo Welt mit einer Spiegelung als Effekt

Die folgenden Zeilen produzieren eine blaue Umrisslinie. Fügen Sie Sie nach dem Aufruf von setEffect() ein.

    // Linie
    text.setStrokeType(StrokeType.OUTSIDE);
    text.setStroke(Color.BLUE);
    text.setStrokeWidth(2);

Hallo Welt mit zusätzlicher blauer Umrisslinie
Hallo Welt mit zusätzlicher blauer Umrisslinie

Zu guter Letzt füllen wir die Schrift – fügen Sie das folgende Fragment nach dem Aufruf von setStrokeWidth() ein.

    // Füllung
    text.setFill(new LinearGradient(0f, 1f, 1f, 0f, true,
        CycleMethod.NO_CYCLE, new Stop[] {
            new Stop(0, Color.web("#f8bd55")),
            new Stop(0.14, Color.web("#c0fe56")),
            new Stop(0.28, Color.web("#5dfbc1")),
            new Stop(0.43, Color.web("#64c2f8")),
            new Stop(0.57, Color.web("#be4af7")),
            new Stop(0.71, Color.web("#ed5fc2")),
            new Stop(0.85, Color.web("#ef504c")),
            new Stop(1, Color.web("#f2660f")), }));

Hallo Welt ganz bunt
Hallo Welt ganz bunt

No comments:

Post a Comment