...
App-logikken ligger i en egen klasse, som gjerne kalles en kontroller-klasse, og når appen kjøres vil det finnes ett objekt av denne klassen, som er koblet sammen med de relevante JavaFX-objektene og objektene som utgjør den indre tilstanden. Sammenkoblingen av alle disse objektene krever spesiell kode i både FXML-koden og i kontroller-klassen. Under ser du den relevant relevante FXML- og kontroller-kode, med en forklaring på sammenhengene i midten.
FXML-kode | Forklaring | Kontroller-kode | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| FXML-koden inneholder et fx:controller-attributt, som angir (det fulle) navnet til kontroller-klassen. Når FXML-koden kjøres (lastes inn og vises), så vil det automatisk lages et objekt av denne klassen. Her vil det altså være et CounterController-objekt. CounterController-objektet gis sjansen til å utføre initialiseringskode, ved at en metode med signaturen void initialize() og annotert med @FXML (egentlig javafx.fxml.FXML) automatisk kalles (hvis den finnes). Annotasjonen står foran metoden og en import-setningen gjør at vi slipper å bruke det fulle navnet. Her opprettes det et Counter-objekt med 5 som øvre grense for telleren, og en får koblingen som vist under.
CounterController-objektet skal bl.a. oppdatere Text-objektet som viser counter-verdien. For å kunne gjøre det, så må CounterController-objektet ha en referanse til Text-objektet, altså et felt av typen Text (egentlig javafx.scene.text.Text). Problemet er å få satt verdien, når det er JavaFX og FXML-mekanikken som lager både CounterController-objektet og Text-objektet., slik at en får koblingene vist under.
Selv koblingen opprettes automatisk av JavaFX vha. to elementer i koden:
Det siste som trengs er kode som håndterer Count-knappen og koblingen mellom knappen og koden. Dette håndteres med to elementer i koden:
|
|
...