JavaFX on yksi Javaan tarjolla olevia kirjastoja tehdä graafisia käyttöliittymiä. Muita ovat mm. AWT, Swing ja SWT. Kurssilla käytetään nykyisin JavaFX:ää, koska se muistuttaa eniten mm. Windows-puolen WPF-kirjastoa (mutta valitettavasti huonommin työkaluin).
OpenJDK:n mukana ei tule enää versiosta 11 alkaen enää automaattisesti JavaFX:ää, jota tarvitaan käyttöliittymien tekemiseen. Tätä aiheutuu meillä jonkin verran turhaa vaivaa.
Windows:
Hae JavaFX Windows SDK kohdasta jossa on Java FX 13.
Pura .zip paketti esim: c:\devel\javafx hakemistoon niin, että bin näkyy tämän hakemiston alla, eli ennen purkamista siirry hakemistoon, jossa näkyy bin, lib yms ja valitse ne kaikki ja sitten pura. Eli kansiorakenne olisi:
c:\
devel\
javafx\
bin\
legal\
lib\
javafx-swt.jar
...Mutta älä vaan pura .jar tiedostoja edelleen pienemmiksi!
Mac: 1. Hae JavaFX Mac OS X SDK kohdasta jossa on Java FX 13.
Tuplaklikkaa haettua tiedostoa.
Purkaantuu nimelle javafx...
Nimeä uudelleen javafx
Siirrä tai kopioi kansioksi
/Users//devel/javafxLinux:
Java FX 13.unzip openjfx-13.0.1_linux-x64_bin-sdk.zipmv javafx-sdk-13.0.1 /home//devel/javafxMiksei käytetä ohjelmointiympäristönä esim. netbeanssia jossa olisi suoraan javaFX mukana? Tai onko kurssilla mahdollista käyttää netbeanssia eclipsen sijaan?
VL: Resurssit… olisi valtava työ kirjoittaa kaikki ohjeistus uudelleen ja kun erot ovat kuitenkin pieniä. Lisäksi myös comtestin plugin pitäisi tehdä erikseen ja ylläpitää Netbeansille. Sitten joku toinen haluaa että käytettäisiin jotakin kolmatta hänelle mielesitä työkalua.
Jos NetBeansillä tms tekee, on comtest ajot ajettava käsin komentoriviltä tai tehtävä sille NetBeansiiin ajokomento. Tämän sa tehdä ja kirjoittaa ohjeet TIMiin jos haluaa. Nyt on koko joululoma mennyt pelkkien Git-ohjeiden kirjoittamisessa…
—Tee Eclipsessä oma käyttäjän JavaFX-kirjasto:
Avaa Eclipse
Window/Preferences/Java/Installed JRE's
Mene jdk-13.0.1 kohdalle
Paina Duplicate...
JRE name: jdk-13-JavaFX
Default VM arguments: (huomaa että vaihdat tarvittaessa hakemistojen nimiä omaa konetta vastaavaksi)
Windows (ota Windowsiin tämä, videossa otin väärän):
--module-path c:\devel\javafx\lib --add-modules javafx.controls,javafx.fxml,javafx.media,javafx.web,javafx.swingMac:
--module-path /Users/vesal/devel/javafx/lib --add-modules javafx.controls,javafx.fxml,javafx.media,javafx.web,javafx.swingLinux:
--module-path /home/vesal/devel/javafx/lib --add-modules javafx.controls,javafx.fxml,javafx.media,javafx.web,javafx.swingPaina Add External JARs...
Lisää kaikki .jar-tiedostot hakemistosta (mutta EI MITÄÄN muuta):
c:\devel\javafx\lib/Users//devel/javafx/lib/home//devel/javafx/libValitse sitten kaikki JavaFX:än takia lisätyt .jar-tiedostot, klikkaa Javadoc location: ja lisää sinne osoite:
https://openjfx.io/javadoc/13/Finnish
Ruksi juuri tekemäsi uusi JRE aktiiviseksi.
Apply and Close
Jos purat javafx:n johonkin muuhun hakemistoon kuin esimerkissä, pitää kohdassa 5 laittaa module-path oman hakemiston mukaiseksi!
—Omaa JRE:tä tehdessä katsokaa, että siellä valmiiksi oleva ..\javanpolku\lib\jrt-fs.jar ei häviä minnekään. Koodi lakkaa siis toimimasta ilman tuota
-pyjuella
—HUOM! Muista aina jatkossa projektia tehdessä tarkistaa, että JRE-kohdassa on tämä JDK!
Luo uusi Eclipsen Java projekti:
File/New/Java ProjecthellofxUse default JRE lukee suluissa edellä luomasi: jdk-13-JavaFX. Jos ei lue, niin valitse Use project specific JRE: ja etsi se siihen.module-infon luomista, niin kiellä!FinnishTee uusi Eclipse Java-luokka:
File/New/ClassfxHelloHelloWorldFinishKatso että HelloWorld.javan paketti fxHello on src hakemiston alla.

Eihän vaan ole tiedostoa module-info.java? Jos on, poista se.
Kopioi tiedoston HelloWorld sisällöksi:
package fxHello;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
/**
* Yksinkertainen esimerkki JavaFX ohjelmasta
* @author vesal
* @version 4.3.2016
*/
public class HelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
BorderPane root = new BorderPane();
Label label = new Label("Moi!");
root.setCenter(label);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
/** @param args ei käytössä */
public static void main(String[] args) {
launch(args);
}
}Mitään ei saa olla punaisella tai keltaisella!
Run/Run
Pitäisi aueta pieni ikkuna, jossa lukee Moi! Jos haluat isomman ikkunan pidennä Label-komponentin sanaa.
Yritin ajaa 1.3 kohdan HelloWorldin, mutta antaa seuraavanlaisen errorin: “Error occured during initialization of boot layer java.lang.module.FindException: Module javafx.web not found” Mistä mahtaa johtua?
VL: eihän sulla vaan Modulepathissa ole jotakin muutakin kuin se JDK?
Joo juuri, kun kerkesin kirjoittamaan tänne niin huomasin, että Modulepathissa oli pikku virhe. Nyt toimii!
Minulla sama ongelma kuin edellä: Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.web not found. Package Explorerissa: hellofx packagen alla on JRE System Library [jdk-11-JavaFX] ja sen alla src -> fxHello -> HelloWorld.java. Kun valitsen hellofx packagen ja menen Project -> Properties -> Java Build Path -> Libraries, niin sielläkin näkyy modulepathin alla pelkästään tuo JRE System Library [jdk-11-JavaFX]. Kaikki kohdat ennen tätä toimii oikein :(
VL: eihän sulla vaan mitään ole punaisella? Onhan WM-arguments edellä varmasti oikein? Eihän vaan ole module-info.java-tiedosto. Jos on, poista.
Piti vaihtaa ylhäältä otettuun –module-path… oikea kansio oman koneen asennuksen mukaan, niin rupesi toimimaan.
Sama ongelma minullakin ja vielä kahdella koneella (pöytäkone ja läppäri):
Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.web not found
“Jos ei toimi, niin katso että asetukset (eli hiiren oikealla projekin nimen päällä ja Properties) ovat seuraavasti:”
Tuon mukaan kun katsoin näyttää muuten samalta paitsi ei ole tuota “Modulepath” tai “Classpath” osiota. Mutta tosiaan tuo JRE System… löytyy.
VL: Nyt on jotakin aikaisemmin jo huonosti jos ei näy niitä kahta siinä. Olethan lukenut: JavaFX-virheet
—Minulla sama ongelma, että “Jos ei toimi, niin katso että asetukset (eli hiiren oikealla projekin nimen päällä ja Properties) ovat seuraavasti:” kohdan mukaiset Modulepath ja Classpath puuttuvat. Olen nyt käynyt huolellisesti läpi JavaFX asennuksen sekä JavaFX virheet, mutta en löytänyt ratkaisua ongelmaan. Minulla on myös Eclipseen kopioidussa koodissa punaisata @Overide kohdalla, jossa Eclipse herjaa syntaksivirhettä: “Syntax error, annotations are only available if source level is 1.5 or greater”
VL: katso väärä java
Jos ei toimi, niin katso että asetukset (eli hiiren oikealla projekin nimen päällä ja Properties) ovat seuraavasti:

Eclipsen e(fx)clipse-laajennus tuo Eclipseen työkaluja JavaFX-ohjelmien kirjoittamiseen.
Huom. Nämä ohjeet Eclipsen versiolle 2019-12 tai uudemmalle.
Asenna Eclipsen e(fx)clipse (3.6.0) päivitys tukemaan Java 11
ee1912.)Help/Eclipse Marketplace:
e(fx)clipsee(fx)clipse 3.6.0Varmistu siitä, että edelliset vaiheet ovat kunnossa. Muuten Eclipse voi kaatua, eikä enää käynnisty.
File/New/Other/JavaFX ja sen alta JavaFX Project✅ Nyt saat ruksia asennetuksi kohdan: e(fx)clipse.
Jee, asennetaan seuraavaksi SceneBuilder…
Ensin en saanut JavaFX-kohtaa näkymään e(fx)clipsen asennuksen jälkeen. Ilmeisesti edellisen ohjeen kohdan 4. jälkeen täytyy odottaa, että Eclipse kysyy pop-up-ikkunassa uudelleenkäynnistystä IDE:n muutosten vuoksi, mikä täytyy hyväksyä (manuaalinen restart ei toiminut ennen viestiä). Tämän kysymyksen ilmestymisessä kesti jonkin aikaa enkä sitä ensimmäisellä kerralla ymmärtänyt odottaa. Ongelma ratkesi kun uudelleenkäynnistin Eclipsen ja toistin e(fx)clipsen asennuksen, ja huomasin tuon pop-up-ikkunan.
—SceneBuilder on työkalu tuottaa JavaFX:ässä käytettyä ulkoasun esittämismuotoa, eli .fxml-tiedostoja. Näitä tiedostoja voidaan aivan hyvin tehdä millä tahansa tekstieditorilla, ja siis myös Eclipsellä. Ja usein tekstimuotoista muokkaamista käytetäänkin, koska se on nopeampaa kuin hiirellä klikkailu. Mutta kunnes kielen pääsee sisälle, voi olla helpointa ainakin aloittaa uudet käyttöliittymät tuottamalla ensimmäiset .fxml-tiedosto graafisella työkalulla. Ja SceneBuilder on yksi tähän välttävästi sopiva työkalu (välttävästi tarkoittaa tässä ettei se alkuunkaan vedä vertoja Microsoftin Visual Studion tai Blendin tasoisille työkaluille).
Seuraavassa on ohjeet SceneBuilderin asentamiseen.
Jos sinulla on omassa koneessasi vanha SceneBuilder, niin tee sille
uninstallja poista kaikki siihen liittyvät tiedostot aluksi.
Agoran mikroluokissa SceneBuilder on valmiiksi asennettuna
C:\devel\SceneBuilder\SceneBuilder.exe,
joten voit siirtyä suoraan kohtaan 2 tarkistamaan asetuksia.
Valitse Gluonin SceneBuilder-lataussivulla oikea käyttöjärjestelmä, lataa asennustiedostot (tässä pitää ottaa Java 11 kun ei ole uudempia!) ja asenna SceneBuilder.
Windows: Voit asentaa muuhunkin kuin oletushakemistoon, esimerkiksi:
C:\devel\SceneBuilder
OS X: Pudota normaalisti Ohjelmat/Applications -kansioon.
Debian-pohjaisissa Linuxeissa (esim. Ubuntu) paras tapa asentaa on avata ladattu tiedosto Software Center:lla. Vaihtoehtoisesti alla olevat komennot voi syöttää terminaaliin.
sudo apt install scenebuilder-11.0.0.debFedora/CentOS (esim. Red Hat Enterprise Linux) käyttää sudo rpm -i dpkg:n sijaan tai vaihtoehtoisesti voi extractata SceneBuilderin .rpm-tiedostosta toimimaan standalonena
sudo dpkg -i scenebuilder-9.0.1.deb
sudo apt-get -f installAsennuksen jälkeen avaa Eclipse ja hyväksy kysymys Workspacen käytöstä.
Siirry Eclipsen valikkoriviltä asetuksiin ja siellä JavaFX-kohtaan:
Window/Preferences/JavaFXEclipse/Asetukset/JavaFXWindow/Preferences/JavaFXKirjoita SceneBuilder executable -kenttään SceneBuilder asennuksen sijainti:
C:\Users\OMATUNNUS\AppData\Local\SceneBuilder\SceneBuilder.exeC:\devel\SceneBuilder\SceneBuilder.exe jos teit asennuksen sinne.SceneBuilder.exe, eli se asennettu versio, ei se sivuilta ladattu asennuspaketti./Applications/SceneBuilder.app/opt/SceneBuilder/SceneBuilderMiksi tästä on poistettu ohje SceneBuilderin sijainnin lisäämisestä Eclipseen?
VL: en tiedä, oisko ollut niin että kokeiluissa se löytyi automaattisesti. No tuo oli kommenteissa, eli palautin sen.
Laitoin uuden koneen kasaan ja asensin siihen 18.04 LTS Ubuntun niin sen kernel versiolla 5.3.0-28-generic SceneBuilder ei toiminut ollenkaan kaatui alle minuutin, eli jos joku sattuu törmäämään samaan ongelmaan niin itselleni auttoi että boottaa tuolla 5.3.0-26-generic kernelillä. Siinäkin lagailee jonkun verran, mutta ei ole vielä kaatunut ja pystyy tekemään tehtävät.
—Jos et vielä ole asentanut kurssin Jar-paketteja Ali.jar, FXGui.jar, niin tee se viimeistään nyt.
Sitten tee SceneBuilder käyttö -harjoitusta ainakin siihen asti että SceneBuilder aukeaa.
Jee! Jos tulit tänne Eclipsen asennusvaiheesta, niin voit mennä takaisin jatkamaan asetusten säätöä.
Nice to know: Jos ihmettelit, miksei SceneBuilderia ladattu Oraclen sivuilta, niin Oracle jakelee nykyisin vain SceneBuilderin lähdekoodia, ja Gluon on hyvä lähde valmiiksi käännetylle versiolle.
Näitä ei tarvitse asennusvaiheessa stressata, mutta perusohjeita SceneBuilderin käytöstä löytyy sitten SceneBuilderin käyttö-sivulta.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.