Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.
 
Inhaltsverzeichnis
Vorwort
1 Neues in Java 8 und Java 7
2 Fortgeschrittene String-Verarbeitung
3 Threads und nebenläufige Programmierung
4 Datenstrukturen und Algorithmen
5 Raum und Zeit
6 Dateien, Verzeichnisse und Dateizugriffe
7 Datenströme
8 Die eXtensible Markup Language (XML)
9 Dateiformate
10 Grafische Oberflächen mit Swing
11 Grafikprogrammierung
12 JavaFX
13 Netzwerkprogrammierung
14 Verteilte Programmierung mit RMI
15 RESTful und SOAP-Web-Services
16 Technologien für die Infrastruktur
17 Typen, Reflection und Annotationen
18 Dynamische Übersetzung und Skriptsprachen
19 Logging und Monitoring
20 Sicherheitskonzepte
21 Datenbankmanagement mit JDBC
22 Java Native Interface (JNI)
23 Dienstprogramme für die Java-Umgebung
Stichwortverzeichnis

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java SE 8 Standard-Bibliothek von Christian Ullenboom
Das Handbuch für Java-Entwickler
Buch: Java SE 8 Standard-Bibliothek

Java SE 8 Standard-Bibliothek
Pfeil 12 JavaFX
Pfeil 12.1 Das erste Programm mit JavaFX
Pfeil 12.2 Zentrale Typen in JavaFX
Pfeil 12.2.1 Szenegraph-Knoten und Container-Typen
Pfeil 12.2.2 Datenstrukturen
Pfeil 12.3 JavaFX-Komponenten und Layout-Container-Klassen
Pfeil 12.3.1 Überblick über die Komponenten
Pfeil 12.3.2 Listener/Handler zur Ereignisbeobachtung
Pfeil 12.3.3 Panels mit speziellen Layouts
Pfeil 12.4 Webbrowser
Pfeil 12.5 Geometrische Objekte
Pfeil 12.5.1 Linien und Rechtecke
Pfeil 12.5.2 Kreise, Ellipsen, Kreisförmiges
Pfeil 12.5.3 Es werde kurvig – quadratische und kubische Splines
Pfeil 12.5.4 Pfade *
Pfeil 12.5.5 Polygone und Polylines
Pfeil 12.5.6 Beschriftungen, Texte, Fonts
Pfeil 12.5.7 Die Oberklasse Shape
Pfeil 12.6 Füllart von Formen
Pfeil 12.6.1 Farben mit der Klasse Color
Pfeil 12.7 Grafiken
Pfeil 12.7.1 Klasse Image
Pfeil 12.7.2 ImageView
Pfeil 12.7.3 Programm-Icon/Fenster-Icon setzen
Pfeil 12.7.4 Zugriff auf die Pixel und neue Pixel-Bilder *
Pfeil 12.8 Deklarative Oberflächen mit FXML
Pfeil 12.9 Diagramme (Charts)
Pfeil 12.9.1 Kuchendiagramm
Pfeil 12.9.2 Balkendiagramm
Pfeil 12.10 Animationen
Pfeil 12.10.1 FadeTransition
Pfeil 12.10.2 ScaleTransition
Pfeil 12.10.3 Transitionen parallel oder sequenziell durchführen
Pfeil 12.11 Medien abspielen
Pfeil 12.12 Das Geometry-Paket *
Pfeil 12.13 JavaFX-Scene in Swing-Applikationen einbetten
Pfeil 12.14 Zum Weiterlesen
 
Zum Seitenanfang

12.6Füllart von Formen Zur vorigen ÜberschriftZur nächsten Überschrift

Ist eine Form gefüllt, so gibt es verschiedene Möglichkeiten, diese Füllung zu beschreiben, wofür JavaFX den Typ javafx.scene.paint.Paint deklariert. Folgende Klassen aus dem javafx.scene. paint-Paket erweitern sie:

  • Color: Repräsentiert sRGB-Farben und Alpha-Werte (Transparenz). Das ist die übliche Füllung.

  • ImagePattern: Füllt Formen mit einer Kachel aus Grafiken.

  • LinearGradient, RadialGradient: Füllen Formen mit Farbverläufen.

Die Zuweisung eines Paint-Objekts übernehmen Methoden wie setFill(Paint) oder setStroke(Paint).

Bemerkung

Viele Formen werden standardmäßig gefüllt. Ist keine Füllung gewünscht, ist ein setFill(null) nötig.

 
Zum Seitenanfang

12.6.1Farben mit der Klasse Color Zur vorigen ÜberschriftZur nächsten Überschrift

Der Einsatz von Farben und Transparenzen ist in Java-Programmen dank der Klasse Color einfach. Ein javafx.scene.paint.Color-Objekt repräsentiert einen Wert aus dem sRGB-Farbraum (Standard-RGB), andere Farbräume sind nicht vorgesehen.

Die Klasse Color stellt Konstanten für Standardfarben und einige Fabrikmethoden (keine Konstruktoren) sowie Anfragemethoden bereit. Außerdem gibt es Methoden, die abgewandelte Color-Objekte liefern – das ist nötig, da Color-Objekte wie String immutable sind. Die wichtigsten Methoden zum Erzeugen von Color-Objekten sind:

class javafx.scene.paint.Color
extends Paint
implements Interpolatable<Color>
  • static Color color(double red, double green, double blue)

  • static Color color(double red, double green, double blue, double opacity)

  • static Color rgb(int red, int green, int blue)

  • static Color rgb(int red, int green, int blue, double opacity)
    Liefert ein neues Color-Objekt aus den Bestandteilen Rot, Grün, Blau, einmal im Wertebereich 0.0 bis 1.0 und dann bei dem Parametertyp int im Bereich 0 bis 255.

Des Weiteren sind für hexadezimalkodierte Farben der Form #rrggbb die Methoden web(String colorString) – synonym dazu valueOf(String) – und web(String colorString, double opacity) deklariert. Bei Angabe von Farbton (auch Tönung genannt), Sättigung und Helligkeit sind hsb(double hue, double saturation, double brightness) und hsb(double hue, double saturation, double brightness, double opacity) von Nutzen. Die web(…)-Methode erlaubt die gleichen Strings wie auch bei CSS, so sind gültig web("#f68", 0.5) – was color(1.0, 0.4, 0.8, 0.5) entspricht – oder web("rgb(255,50%,50%,0.25)", 0.5) – was gleichkommt mit color(1.0, 0.5, 0.5, 0.125).

Daneben gibt es zur Erzeugung von Grautönen ein paar Spezialmethoden: gray(double gray), gray(double gray, double opacity), grayRgb(int gray), grayRgb(int gray, double opacity).

[»]Hinweis

Menschen unterscheiden Farben an den drei Eigenschaften Farbton, Helligkeit und Sättigung. Die menschliche Farbwahrnehmung kann etwa 200 Farbtöne unterscheiden. Diese werden durch die Wellenlänge des Lichts bestimmt. Die Lichtintensität und Empfindlichkeit unserer Rezeptoren lässt uns etwa 500 Helligkeitsstufen unterscheiden. Bei der Sättigung handelt es sich um eine Mischung mit weißem Licht. Hier erkennen wir etwa 20 Stufen. Unser visuelles System kann somit ungefähr 2 Millionen (200 × 500 × 20) Farbnuancen unterscheiden.

Zufällige Farbblöcke zeichnen

Um die Möglichkeiten der Farbgestaltung einmal zu beobachten, betrachten wir die Ausgabe eines Programms, das Rechtecke mit wahllosen Farben anzeigt:

Listing 12.10com/tutego/insel/javafx/ColorDemo.java, start(…)

Group group = new Group();
stage.setResizable( true );
stage.setScene( new Scene( group, 800, 800 ) );
Random r = new Random();
for ( int y = 12; y < stage.getScene().getHeight() - 25; y += 30 )
for ( int x = 12; x < stage.getScene().getWidth() - 25; x += 30 ) {
Rectangle rect = new Rectangle( x, y, 25, 25 );
Color color = Color.rgb( r.nextInt( 256 ), r.nextInt( 256 ), r.nextInt( 256 ) );
rect.setFill( color );
rect.setStroke( color.grayscale() );
group.getChildren().add( rect );
}

Das Fenster der Applikation hat eine gewisse Größe, die wir später in der Breite und Höhe abfragen, falls wir die Fensterausmaße einmal ändern wollen. Anschließend erzeugen wir Blöcke, die mit einer zufälligen Farbe gefüllt sind. setFill(…) übernimmt diese Aufgabe. Für den Rahmen der gefüllten Rechtecke setzen wir die Zeichenstiftfarbe mit der Methode setStroke(…). Die Farbe des Randes leiten wir von der Zufallsfarbe ab.

Programmierter Neoplastizismus

Abbildung 12.9Programmierter Neoplastizismus

Vordefinierte Farben

Wenn wir Farben benutzen wollen, sind schon an die 150 Werte vordefiniert, wie Color.WHITE, Color.PLUM. Für eine genauere Übersicht lohnt ein Blick in die Javadoc; neben den Farbkonstanten zeigt die Webseite auch ein Rechteck in der Farbe selbst. Die Farbnamen können auch in den Strings verwendet werden, da es bekannte HTML/CSS-Farben sind, etwa über Color.web("orange").

Farbanteile zurückgeben

Mitunter müssen wir den umgekehrten Weg gehen und von einem gegebenen Color-Objekt wieder die Rot-, Grün-, Blau- oder Transparenzanteile extrahieren. Dies ist einfach, und die JavaFX-Bibliothek bietet Entsprechendes an:

class javafx.scene.paint.Color
extends Paint
implements Interpolatable<Color>
  • int getRed()

  • int getGreen()

  • int getBlue()
    Liefert Rot-, Grün- und Blau-Anteile des Farbobjekts im Bereich von 0 bis 255.

  • int getOpacity()
    Gibt den Alpha-Anteil zurück.

  • boolean isOpaque()
    Ist die Farbe komplett durchgängig?

  • int getHue()

  • int getSaturation()

  • int getbrightness()
    Liefert Farbton, Sättigung und Helligkeit.

Eine Methode wie int getRGB(), die die RGB-Farbe auf einen Schlag zurückgibt, existiert merkwürdigerweise nicht.

Die Farbmodelle HSB und RGB *

Zwei Farbmodelle sind in der Computergrafik geläufig: das RGB-Modell, bei dem die Farben durch einen Rot-, Grün- und Blau-Anteil definiert werden, und das HSB-Modell, das die Farben durch Farbton (engl. hue), Farbsättigung (engl. saturation) und Helligkeit (engl. brightness) definiert. Die Farbmodelle können die gleichen Farben beschreiben und ineinander umgerechnet werden. Dazu wird zunächst das Color-Objekt entweder mit color(…) oder mit hsb(…) aufgebaut und dann mit den gegenteiligen getXXX()-Methoden erfragt. Direkte Umrechenmethoden gibt es nicht.

Farbtöne ableiten

brighter() und darker() liefern ein Farbobjekt zurück, das jeweils eine Farbnuance heller bzw. dunkler ist. Diese beiden Methoden sind nützlich, um zum Beispiel bei angedeuteten 3D-Objekten die Ränder in hellerem oder dunklerem Farbton zu zeichnen.

desaturate() ist eine Methode, die die Sättigung herausnimmt, saturate() verstärkt sie. grayscale() konvertiert komplett die Farbe in einen Grauton, und invert() dreht die Farbe um. Eine besondere Methode ist interpolate(Color endValue, double t), die eine Farbe liefert, die von dem gegebenen Startwert hin zum Endwert laufen kann, wobei t von 0 bis 1 geht und sagt, wie nahe die Zielfarbe am Start- bzw. Endwert liegt.

 


Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java SE 8 Standard-Bibliothek Java SE 8 Standard-Bibliothek
Jetzt Buch bestellen

 Buchempfehlungen
Zum Rheinwerk-Shop: Java ist auch eine Insel
Java ist auch eine Insel


Zum Rheinwerk-Shop: Professionell entwickeln mit Java EE 8
Professionell entwickeln mit Java EE 8


Zum Rheinwerk-Shop: Besser coden
Besser coden


Zum Rheinwerk-Shop: Entwurfsmuster
Entwurfsmuster


Zum Rheinwerk-Shop: IT-Projektmanagement
IT-Projektmanagement


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2018
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 
Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern