ITI0011:JavaFX

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti

Lingid

JavaFX kasutamine IntelliJ's: https://www.jetbrains.com/help/idea/2016.1/preparing-for-javafx-application-development.html

Scene Builderi allalaadimine lehelt: http://gluonhq.com/products/downloads/

Vaikimisi installeeritakse Windowsis sellisesse kausta: C:\Users\[kasutaja]\AppData\Local\SceneBuilder\SceneBuilder.exe

Väga hea tutorial: http://code.makery.ch/java/javafx-8-tutorial-intro/ NB! tutoriali läbitegemiseks on kindlasti vaja Java versioon 8u40 (või uuem).

Oracle'i enda tutorial JavaFX kohta: http://docs.oracle.com/javase/8/javase-clienttechnologies.htm

Eclipse'is arendamiseks on mõistlik laadida alla e(fx)clipse plugin: http://www.eclipse.org/efxclipse/index.html

IntelliJ ja JavaFX

Lugemismaterjal: https://www.jetbrains.com/help/idea/2016.1/preparing-for-javafx-application-development.html

Uuema IntelliJ-ga peaks JavaFX plugin kaasa tulema. Kui loote uue projekti: File -> New -> Project, peaks vasakul valikus olema Java FX.

Sellise projekti puhul luuakse järgnev projektistruktuur:

src/
  sample/            <- package
    Controller.java  <- controller, juhtimine
    Main.java        <- programm pannakse siit käima
    sample.fxml      <- view, visuaalne osa programmist

E(fx)clipse'is uusima Java seadistamine

Kui teil eelnevalt on olnud vanem versioon Javast, siis peale uue (v 8u40) installeerimist see automaatselt Eclipse'is ei jõustu. Mõistlik oleks see terve Eclipse'i peale vaikimisi versiooniks muuta. Selleks mine: Window -> Preferences -> Java -> Installed JREs. Seal on arvatavasti teie eelnev versioon Javast (näiteks 8u31 või 8u25). Add.. -> StandardVM. JRE home -> sinna läheb java juurkaust (mille sees on bin ja lib kaustad), näiteks C:\Program Files\Java\jre1.8.0_40. Määrake mingi nimi (vaikimisi võtab kausta nime). Finish. Nüüd peaks JRE-de nimekirjas olema teie lisatud 8u40. Pange 8u40 ette linnuke - edaspidi on see vaikimisi JRE uute projektide puhul.

Olemasoleva projekti puhul peate JRE käsitsi ära muutma: project (kas ülevalt menüüst või exploreris parem klikk projekti nime peal) -> Properties -> Java Build Path -> Libraries. Sealt lisada Add Library... -> JRE System Library -> sealt peaks Workspace default (8u40) valima.

JavaFX kasutamine Java versioon 1.7-ga

Kui vähegi võimalik, on soovitatav kasutada Java versiooni 8 (täpsemalt isegi 8.40). Kui mingil põhjusel pole see võimalik, siis see info töötas eelmisel aastal (pole läbi testitud). Infoks, et HW4 nõuab Java versioon 8-t.

TTÜ arvutiklassides on arvutitesse installeeritud Java versioon 1.7. Sellega vaikimisi JavaFX-i kaasas ei ole. Et kasutada JavaFX-i, tuleb teha järgmised sammud:

  • kui projekt on loodud, siis projekti peal parem klikk - properties
  • Java Build Path (seadete aknas vasakul valik)
  • Libraries (tab)
  • Add External JARs.. (nupp)
  • otsite üles jfxrt.jar faili, mis tõenäoliselt asub java jrt (runtime) kataloogis, lib kausta all. Arvutiklassis näiteks: C:\Program Files\Java\jre7\lib\jfxrt.jar

Nüüd peaks JavaFX rakendus Java versiooniga 1.7 töötama.

Hello World

Lihtne "hello world" näide JavaFX-iga (saate testida, kas JavaFX sai seadistatud korrektselt). Testimiseks tehke uus Java projekt ja src kausta alla klass nimega HelloWorld ning kopeerige järgnev kood sellesse faili:

<source lang="java"> import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.StackPane; import javafx.stage.Stage;

public class HelloWorld extends Application {

   public static void main(String[] args) {
       launch(args);
   }
   
   @Override
   public void start(Stage primaryStage) {
       primaryStage.setTitle("Hello World!");
       Button btn = new Button();
       btn.setText("Say 'Hello World'");
       btn.setOnAction(new EventHandler<ActionEvent>() {

           @Override
           public void handle(ActionEvent event) {
               System.out.println("Hello World!");
           }
       });
       
       StackPane root = new StackPane();
       root.getChildren().add(btn);
       primaryStage.setScene(new Scene(root, 300, 250));
       primaryStage.show();
   }

} </source>

Probleemid

Sellise seadistusega võib teil tekkida "Access restriction" probleem. Erinevatel inimestel on erinev lahendus töötanud. Vaadake näiteks neid lahendusi: