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.9Diagramme (Charts) Zur vorigen ÜberschriftZur nächsten Überschrift

Neben den Standardkomponenten bietet JavaFX zusätzliche Klassen für Diagramme – und die sehen toll aus. Als Basisklasse deklariert JavaFX dazu Chart, wovon es zwei zentrale Ableitungen gibt: PieChart für Kuchendiagramme und XYChart für alle Charts, die Daten irgendwie Koordinaten im zweidimensionalen Raum zuordnen. Weil es unterschiedliche 2D-Diagrammtypen gibt, bietet das Framework weitere Unterklassen von XYChart. Die Klassenhierarchie sitzt vollständig im Paket javafx.scene.chart und sieht so aus:

javafx.scene.chart.Chart
PieChart
XYChart<X,Y>
AreaChart<X,Y>
BarChart<X,Y>
BubbleChart<X,Y>
LineChart<X,Y>
ScatterChart<X,Y>

Als Beispiel für XYChart wollen wir gleich ein Balkendiagramm aufbauen. Eine ganze Reihe anderer Diagramme liegen für Entwickler zur Introspektion zugänglich unter dem Verzeichnis ChartsSampler\src\chartssampler der JavaFX-Demos.

 
Zum Seitenanfang

12.9.1Kuchendiagramm Zur vorigen ÜberschriftZur nächsten Überschrift

Kuchendiagramme sind mit JavaFX sehr einfach aufzubauen. Es muss lediglich eine spezielle Sammlung mit String-double-Paaren (für Titel und Wert) der PieChart-Klasse übergeben werden:

Listing 12.15com/tutego/insel/javafx/BarChartDemo.java

package com.tutego.insel.javafx;

import javafx.application.Application;
import javafx.collections.*;
import javafx.scene.*;
import javafx.scene.chart.*;
import javafx.stage.Stage;

public class PieChartDemo extends Application {
@Override
public void start( Stage stage ) {
ObservableList<PieChart.Data> data =
FXCollections.observableArrayList(
new PieChart.Data( "Black Sun", 123 ),
new PieChart.Data( "Long Delight", 88 ),
new PieChart.Data( "Careless Whisper", 45 ),
new PieChart.Data( "Silky Milky", 30 ) );

PieChart chart = new PieChart( data );
chart.setTitle( "Die beliebtesten Haarpflegeprodukte" );

stage.setScene( new Scene( chart ) );
stage.show();
}

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

Abbildung 12.11Screenshot des Diagramms

Das Beispiel zeigt, dass der PieChart-Konstruktor die Dateien in einem speziellen Container vom Typ ObservableList erwartet. Eine Implementierung der Schnittstelle wird mit der Methode observableArrayList(…) der Utility-Klasse FXCollections bereitgestellt. Die Methode observableArrayList(…) ist überladen und hier können gleich über eine variable Argumentliste die Elemente übergeben werden. Der PieChart erwartet in der Sammlung Data-Objekte, die den Titel und einen Wert angeben. Die Werte werden automatisch in der richtigen Proportion auf den 360-Grad-Kreis gebracht.

 
Zum Seitenanfang

12.9.2Balkendiagramm Zur vorigen ÜberschriftZur nächsten Überschrift

Die Diagrammklasse BarChart ist einfach zu nutzen; nur die Vorbereitung der Daten ist etwas Schreibarbeit. Alles ist generisch deklariert, und so wimmelt es in JavaFX-Diagramm-Programmen nur so von spitzen Klammern.

Beginnen wir mit einem kompletten Beispiel zur Darstellung der Bevölkerungsentwicklung in Deutschland,[ 110 ](http://www.destatis.de/jetspeed/portal/cms/Sites/destatis/Internet/DE/Content/Statistiken/Zeitreihen/ LangeReihen/Bevoelkerung/Content100/lrbev01ga,templateId=renderPrint.psml) und betrachten wir es dann im Anschluss genauer:

Listing 12.16com/tutego/insel/javafx/BarChartDemo.java, start()

@Override
public void start( Stage stage ) {
CategoryAxis xAxis = new CategoryAxis();
xAxis.setLabel( "Jahrgang" );

NumberAxis yAxis = new NumberAxis( "Bevölkerung",
0 /* lowerBound */,
90000000 /* upperBound */,
30000000 /* tickUnit */ );

ObservableList<XYChart.Data<String,Number>> series
= FXCollections.observableArrayList(
new XYChart.Data<String,Number>( "1950", 69346297 ),
new XYChart.Data<String,Number>( "1960", 73146809 ),
new XYChart.Data<String,Number>( "1970", 78069482 ),
new XYChart.Data<String,Number>( "1980", 78397483 ),
new XYChart.Data<String,Number>( "1990", 79753227 ),
new XYChart.Data<String,Number>( "2000", 82259540 ),
new XYChart.Data<String,Number>( "2009", 81802257 )
);

ObservableList<XYChart.Series<String,Number>> data =
FXCollections.observableArrayList();
data.add( new BarChart.Series<>( series ) );

BarChart<String,Number> chart = new BarChart<>( xAxis, yAxis );
chart.setTitle( "Bevölkerungsentwicklung in Deutschland" );
chart.setData( data );

stage.setScene( new Scene( new Group( chart ), 500, 400 ) );
stage.show();
}
Screenshot des Balkendiagramms

Abbildung 12.12Screenshot des Balkendiagramms

Zum Aufbau eines Balkendiagramms lassen sich drei Schritte ausmachen:

  1. Aufbau der Achsen: Achsen sind in JavaFX durch den Basistyp Axis<T> repräsentiert und werden später dem Diagramm zugewiesen. Von Axis gibt es Unterklassen wie CategoryAxis und ValueAxis (mit der Unterklasse NumberAxis). Wir nutzen beide Typen, denn CategoryAxis ist für Strings gedacht und NumberAxis für numerische Werte.

  2. Datenserien aufbauen: Die Daten kommen wieder in den speziellen JavaFX-Container ObservableList und sind vom Typ Data, einer inneren Klasse von XYChart. Die enthaltenen Datentypen können beliebig sein, daher ist die Klasse generisch deklariert. In unserem Fall sind die Typen String (x-Achse) und Double (Number für y-Achse). Nachdem eine Serie aufgebaut wurde, kommt diese Serie in einen anderen Container. Das liegt daran, dass etwa ein Balkendiagramm für die Bevölkerungsentwicklung auch mehrere Länder darstellen könnte, etwa für Deutschland Balken in Gelb und für Nigeria Balken in Rot. Der Container kann befüllt werden – einmal, indem die Elemente direkt der Methode observableArrayList(…) übergeben werden (erster Fall), oder nachträglich über add(…) wie im zweiten Fall.

  3. Chart fertigstellen: Die Diagrammklasse typisieren wir mit BarChart<String,Number> und setzen alle Eigenschaften: die Achsen über den Konstruktor, den Titel und die Daten über Setter.

 


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