Do not worry, if you have a Kotlin controller class, you can write something like inside fxml file:
<!-- Flags: IsKotlin-->
And the Kotlin code will work seamlessly:
package desktool.views.kotlinView import javafx.event.ActionEvent import javafx.fxml.FXMLimport javafx.scene.control.Button import javafx.scene.control.Label class LineToolControler { var thickness = 1
@FXML
var label: Label? = null
@FXML
var button: Button? = null
@FXML
fun handleButtonAction(event: ActionEvent) { println("You clicked me!") label?.setText("Hello World!") } }
This is not to say that right now it is better to use Kotlin, but the idea is that maybe in future the code will be extended to support various other languages (Scala is another language which comes to mind) with JavaFx.
Another important part is that right now the compiler will generate a preloader class (Fx2CPreloader) which can load all classes in memory so for second time the JVM will start the dialogs in a fraction of the second. Under my unscientific testing, using a slow Atom CPU (Baytrail) machine, a medium sized dialog first time loading of classes into JVM could take something like 600 ms, but with preloading, the time can be reduced into 2-5 ms.
So, is it important to use this preloader? I think that yes, especially if you have many UI elements, using this preloader under a splash screen will warm up the JVM and will make the 2nd run to make your dialogs to be seen (close to) instantly.
This Fx2C tool is for me mature enough to be in maintenance mode for now, as it works really well enough for my taste/usages and I will likely use to make more JavaFx applications and just to feel responsive, a feature which I was feeling as missing going from a .Net WPF environment.