Difference between revisions of "Build ImageJ2 Plugin With JavaFX"

m (A minimal ImageJ 2 JavaFX plugin)
 
(4 intermediate revisions by one other user not shown)
Line 12: Line 12:
 
== Under the hood ==
 
== Under the hood ==
  
Usually a JavaFX program need to declare a `javafx.application.Application`.
+
Usually a JavaFX program needs to declare a <tt>javafx.application.Application</tt>. Because only '''one''' <tt>Application</tt> instance can exist at runtime, I think under IJ1/IJ2 interface (using Swing), if you want to use JavaFX you need to use the <tt>javafx.embed.swing.JFXPanel</tt> class which make the link/bridge between a <tt>JFrame</tt> and JavaFX.
  
== A minimal ImageJ 2 JavaFX plugin ==
+
* An example of the usual <tt>javafx.application.Application</tt> can be found here : https://github.com/hadim/imagej-plugin-javafx/blob/master/src/main/java/net/imagej/plugin/minimalJavaFXPlugin/gui/MainApp.java
  
I have created a '''minimal ImageJ plugin''' that show how to use JavaFX for the UI of a plugin there : https://github.com/hadim/imagej-plugin-javafx (this plugin should maybe moved to the imagej GitHub organization so any IJ devs can more easly edit).
+
* An example of how to use <tt>javafx.embed.swing.JFXPanel</tt> can be found here : https://github.com/hadim/imagej-plugin-javafx/blob/master/src/main/java/net/imagej/plugin/minimalJavaFXPlugin/gui/MainAppFrame.java
 
 
 
 
== Important note ==
 
  
 +
== A minimal ImageJ 2 JavaFX plugin ==
  
Since JavaFX is not (yet) shipped with OpenJDK. IJ2/Fiji distribution will need to find a way how to ship JavaFX (Oracle JDK ?). So the question is : '''Can people start developing JavaFX plugin ?'''
+
I have created a '''minimal ImageJ plugin''' that show how to use JavaFX for the UI of a plugin there : https://github.com/ctrueden/imagej-plugins-javafx (this plugin should maybe moved to the imagej GitHub organization so any IJ devs can more easly edit).

Latest revision as of 22:55, 25 April 2020

JavaFX is the new graphical toolkit that will on the long term probably replace Swing. This page aims to give some guidelines to be able to build ImageJ2 plugin with JavaFX.

Please don't hesitate to edit this page and add your tricks and/or experience about JavaFX and ImageJ2.

Some things to know

  • JavaFX is only available since Java 8.
  • JavaFX is not shipped with OpenJDK but it is with the Oracle JDK.
  • JavaFX development seems to move to the OpenJFX project : http://openjdk.java.net/projects/openjfx. But it's unclear what is going on for now...
  • SceneBuilder is a graphical interface that help creating JavaFX FXML files. Oracle stopped distributing SceneBuilder binaries (I don't know why). You can find new binaries from the Gluon project there : http://gluonhq.com/open-source/scene-builder

Under the hood

Usually a JavaFX program needs to declare a javafx.application.Application. Because only one Application instance can exist at runtime, I think under IJ1/IJ2 interface (using Swing), if you want to use JavaFX you need to use the javafx.embed.swing.JFXPanel class which make the link/bridge between a JFrame and JavaFX.

A minimal ImageJ 2 JavaFX plugin

I have created a minimal ImageJ plugin that show how to use JavaFX for the UI of a plugin there : https://github.com/ctrueden/imagej-plugins-javafx (this plugin should maybe moved to the imagej GitHub organization so any IJ devs can more easly edit).