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.3JavaFX-Komponenten und Layout-Container-Klassen Zur vorigen ÜberschriftZur nächsten Überschrift

JavaFX kommt wie Swing mit einem Satz von Standardkomponenten im Paket javafx.scene.control und hat Control als Basisklasse.

 
Zum Seitenanfang

12.3.1Überblick über die Komponenten Zur vorigen ÜberschriftZur nächsten Überschrift

Die Klassennamen sind selbsterklärend:

  • Label

  • Hyperlink

  • Button

  • RadioButton

  • ToggleButton

  • CheckBox

  • ChoiceBox

  • TextField

  • PasswordField

  • ListView

  • TableView

  • TitledPane

  • ScrollPane

  • ProgressBar

  • ProgressIndicator

  • Pane mit Unterklassen für unterschiedliche Layouts

Styling

Cascading Style Sheets (CSS) können das Aussehen anpassen. Der Vorteil ist, dass dies deklarativ ohne Programmieraufwand möglich ist. Die CSS-Deklaration lässt sich in eine Datei auslagern und für eine ganze JavaFX-Applikation anwenden oder auch lokal mit setStyle() setzen. Neben dem Styling lässt sich eine komplett neue Skin definieren, etwa für Oberflächen mit besonders starken Kontrasten.

Bei der Konfiguration findet sich keine Klasse vom AWT oder von Swing wieder. Im eingehenden Beispiel ließ sich das schon an der JavaFX-eigenen Klasse Font ablesen. Das geht weiter bei den Icons, die als ImageView-Objekte zum Beispiel an Schaltflächen gesetzt werden. Für Farben gibt es die eigene Color-Klasse mit reichlich vorgefertigten Farbkonstanten und einer Methode Color.web(), die die Farbangaben hexadezimal webüblich annimmt. JavaFX ist als vollständig neue Technologie zu verstehen, die alte Zöpfe abschneidet.

 
Zum Seitenanfang

12.3.2Listener/Handler zur Ereignisbeobachtung Zur vorigen ÜberschriftZur nächsten Überschrift

Die Ereignisbehandlung folgt dem bekannten Listener-Prinzip. Es ist unnötig, zu betonen, dass neue JavaFX-Typen verwendet werden. Einen anderen Unterschied gibt es, der an GWT erinnert: Jede Komponente ist ein Knoten, und jedem Knoten lässt sich im Prinzip jeder Listener zuordnen, wobei der Listener bei JavaFX Handler genannt wird.

Allgemeiner Event-Handler

Die Klasse für alle Knoten Node deklariert:

  • addEventHandler(EventType<T>, EventHandler<? super T>) zum Hinzufügen der Handler

  • removeEventHandler(EventType<T>, EventHandler<? super T>) zum Abmelden der Handler

addEventHandler() ist also eine allgemeine Möglichkeit, etwa einer Schaltfläche einen Horcher zuzuordnen. Für einen Button b könnte das so aussehen:

b.addEventHandler( ActionEvent.ACTION, new EventHandler<ActionEvent>() {
@Override public void handle( ActionEvent e ) {

}
} );

Spezielle Handler

Neben der Möglichkeit, über die addEventHandler()-Methode einen Handler hinzuzufügen, bieten die Komponentenklassen auch eigene Hinzufügemethoden, etwa der Button die Methode setOnAction(EventHandler<ActionEvent>).

Das nächste Beispiel deaktiviert beim Klick auf die Schaltfläche diese:

Listing 12.2com/tutego/insel/javafx/ButtonSetOnActionDemo.java, start()

@Override
public void start( Stage stage ) {
final Button b = new Button( "OK" );
b.setFont( Font.font( "Calibri", 30 ) );
Image image = new Image( getClass().getResourceAsStream( "/images/ok.png" ) );
b.setGraphic( new ImageView( image ) );
b.setOnAction( new EventHandler<ActionEvent>() {
@Override public void handle( ActionEvent e ) {
b.setDisable( true );
}
} );

stage.setScene( new Scene( b ) );
stage.show();
}
 
Zum Seitenanfang

12.3.3Panels mit speziellen Layouts Zur vorigen ÜberschriftZur nächsten Überschrift

Unser Beispiel nutzt zur Positionierung absolute Angaben mit setX() und setY(). Das ist für Komponenten eher unüblich, und eine Anordnung nach speziellen Layouts ist zu bevorzugen. JavaFX bietet spezielle Container-Klassen, die jeweils ein individuelles Layout realisieren.

Vergleich zwischen Swing und JavaFX

Das ist anders als bei Swing, bei dem das Strategiemuster zum Zuge kommt: Ein Container ist mit einem Layoutmanager assoziiert, der die Kinder anordnet.

JavaFX-Container

Es stehen in JavaFX folgende Container-Klassen zur Verfügung (in Klammern stehen die vergleichbaren Layoutmanager in Swing, die etwa einem JPanel zugewiesen werden):

  • BorderPane (vergleichbar mit BorderLayout)

  • FlowPane (vergleichbar mit FlowLayout)

  • HBox, VBox (vergleichbar dem Container über Box.createHorizontalBox() bzw. Box.createVerticalBox())

  • StackPane (vergleichbar mit CardLayout)

  • GridPane (wie ein einfacheres GridBagLayout)

  • TilePane (vergleichbar mit GridLayout)

  • AnchorPane (vergleichbar mit BorderLayout und Komponenten in allen Ecken)

Beispiel

Im nächsten Beispiel soll ein kleines Formular Vor- und Nachname erfassen. Die GridPane ist für Anordnungen in einem Raster bestens geeignet.

Listing 12.3com/tutego/insel/javafx/GridPaneDemo.java, start()

@Override
public void start( Stage stage ) {
GridPane grid = new GridPane();
grid.setHgap( 10 );
grid.setVgap( 10 );
grid.setPadding( new Insets( 10, 10, 10, 10 ) );

Label header = new Label( "Kontaktdaten" );
header.setFont( new Font( 20 ) );
GridPane.setHalignment( header, HPos.CENTER );

grid.add( header,
0 /*x*/, 0 /*y*/,
2 /*colSpan*/, 1 /*rowSpan*/ );
grid.add( new Label( "Vorname" ), 0, 1 );
grid.add( new TextField(), 1, 1 );
grid.add( new Label( "Nachname" ), 0, 2 );
grid.add( new TextField(), 1, 2 );

stage.setScene( new Scene( grid ) );
stage.show();
}
Screenshot der Anwendung GridPaneDemo

Abbildung 12.2Screenshot der Anwendung GridPaneDemo

Die GridPane wächst automatisch und muss nicht mit einer festen Anzahl von Spalten/Zeilen erzeugt werden. Die add(…)-Methode setzt später eine Komponente an die gewünschte Stelle, wobei es eine überladene add(…)-Methode gibt, die die Komponente über mehrere Zellen verteilen kann. Wie die Komponente dann in ihrem Bereich ausgerichtet wird, bestimmen die statischen Methoden setHalignment(…) und setValignment(…), denen die auszurichtende Komponente und die Orientierung mitgegeben wird.

 


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