Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Tipus de nodes

Tot el que es veu en una aplicació JavaFX és un Node: un botó, una etiqueta, un cercle i també el contenidor que els agrupa. Dins del graf, cada node fa un dels tres papers següents:

  1. Arrel: el primer node del graf, el que es passa a la Scene. Ha de poder tenir fills.
  2. Branca (parent): un node que en conté d’altres. Poden ser-ho un Group, una Region (la base dels layouts i dels controls) o un WebView.
  3. Fulla (leaf): un node sense fills, com una etiqueta o una figura.

Famílies de nodes

PaquetContéExemples
javafx.scene.controlEls controls amb què interactua l’usuariButton, Label, TextField, CheckBox, ChoiceBox, TableView
javafx.scene.layoutEls contenidors que col·loquen els fillsBorderPane, GridPane, HBox, VBox
javafx.scene.shapeFigures geomètriquesCircle, Rectangle, Line, Polygon
javafx.scene.image, javafx.scene.mediaImatges, àudio i vídeoImageView, MediaView
javafx.scene.webUn navegador encastatWebView

Propietats dels nodes

Cada node exposa el seu estat com un conjunt de propietats amb getters i setters. Un Label, per exemple, té un text, i per tant getText() i setText(String):

Label etiqueta = new Label("inicial");
etiqueta.setText("actualitzat");

A més de la parella de mètodes, cada propietat té un mètode que retorna l’objecte propietat sencer, textProperty(). Aquest objecte és observable, i és el que permet escoltar-ne els canvis i enllaçar-lo amb altres propietats, com es veu a Binding de propietats.

Hi ha propietats que tenen tots els nodes, perquè estan definides a Node: visible, disable, opacity, id, styleClass i les de posició i mida.

Dibuixar directament

Quan el que vols no és compondre controls sinó pintar (un joc, un gràfic a mida), la manera pràctica no és crear milers de nodes, sinó fer servir un Canvas. És un sol node amb una superfície de dibuix, sobre la qual s’escriu amb un GraphicsContext:

Canvas canvas = new Canvas(400, 200);
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFill(Color.CORNFLOWERBLUE);
gc.fillOval(10, 10, 80, 80);

La diferència és important: amb nodes, JavaFX manté cada element i el repinta quan cal; amb un Canvas, el que es guarda és el resultat del dibuix i el repintat és cosa teva.

Referències

Last change: , commit: 0ee48c2