- COMP.CS.140
- 12. Graafiset käyttöliittymät
- 12.2 JavaFX-kirjasto
JavaFX-kirjasto¶
JavaFX on JavaAPI graafisten käyttöliittymien toteuttamiseen. Se tulee suoraan osana Java SE Runtime Environmentia (JRE) ja JDK:ta. JavaFX:n tutoriaali on hyödyllinen resurssi JavaFX-ohjelmia toteuttaessa.
NetBeansissa JavaFX-ohjelman saat toteutettua Maven-projektina New Project->Simple JavaFX Maven Archetype.
JavaFX-projektin pom.xml
:stä kuuluu löytyä riippuvuus JavaFX:lle. Esimerkiksi:
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>17.0.1</version>
</dependency>
</dependencies>
sekä plugin-määrittely JavaFX-Maven-pluginille. Esimerkiksi:
<plugins>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
<configuration>
<mainClass>package.MainClass</mainClass>
</configuration>
</plugin>
</plugins>
Määritelty MainClass
sisältää JavaFX-ohjelman määrittelevän luokan.
NetBeans populoi alustavan luokan valmiiksikin, mutta yksinkertaisin JavaFX-ohjelma on:
package example;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
* JavaFX App
*/
public class App extends Application {
@Override
public void start(Stage stage) {
// Setting the main window with a title
stage.setTitle("All the world's a stage");
// Show the main window
stage.show();
}
public static void main(String[] args) {
launch( args );
}
}
Lähdetään purkamaan ohjelman rakennetta ja katsomaan, mistä JavaFX-ohjelma oikeastaan koostuu.
JavaFX-ohjelman pääluokka erikoistaa javafx.application.Application
-luokkaa.
Kun ohjelma käynnistyy, ohjelman suoritus etenee pääluokan tasolla seuraavasti:
Määritellystä
Application
-luokasta luodaan olio.Kutsutaan olion
init()
-metodia, jonka tehtävä on alustaa ohjelman tarvitsema tila ennen suorituksen alkua, esim. luoda tarvittavia olioita.Kutsutaan olion
start(Stage stage)
-metodia, joka toimii ohjelman alkupisteenä. Metodi saa parametrinaanjavafx.stage.Stage
-olion, joka määrittelee ohjelman pääikkunan.show()
-metodin kutsuminenstage
:lle näyttää ikkunan ruudulla.Ohjelma jää kuuntelemaan tapahtumia. Pääluokka odottaa tässä kohtaa ohjelman sulkevaa tapahtumaa eli joko
Platform.exit()
:n kutsua tai sitä, että kaikki ohjelman ikkunat on suljettu jaPlatform
:lle on määriteltyimplicitExit
Kutsuu
stop()
-metodia
On tärkeää huomioida, että start()
on Application
:ssa abstrakti ja kuormitettava.
init()
:lle ja stop()
:lle on tarjolla tyhjät toteutukset.
Ohjelmamme ei vielä tee mitään. Lähdetään siis lisäämään toiminnallisuutta ikkunaan.