JavaFX Examples
These examples illustrate the use of JavaFX with Waterloo charts.This creates a Waterloo graph inside Swing hierarchy and add JavaFX content to a JFXPanel.
package kcl.waterloo.jfx; import java.awt.EventQueue; import java.lang.reflect.InvocationTargetException; import javafx.application.Platform; import javafx.embed.swing.JFXPanel; import javafx.scene.Scene; import javafx.scene.web.WebEngine; import javafx.scene.web.WebView; import kcl.waterloo.graphics.GJGraph; import kcl.waterloo.graphics.GJGraphContainer; import kcl.waterloo.graphics.plots2D.GJPlotInterface; import kcl.waterloo.graphics.plots2D.GJScatter; import kcl.waterloo.swing.GCFrame; /** * * @author ML */ public class MathJax { /** * This example plots a scatter plot alongside a web page in a * JavaFX WebView. * * The WebView is added to the Swing layout using a JFXPanel. * * @param args the command line arguments */ public static void main(String[] args) throws InterruptedException, InvocationTargetException { EventQueue.invokeAndWait(new Runnable() { // Create the Swing components on the EDT @Override public void run() { GCFrame f = new GCFrame(); GJGraphContainer gc = GJGraphContainer.createInstance(GJGraph.createInstance()); f.add(gc); // Create a plot a quadratic double[] x= new double[20]; double[] y= new double[20]; for (int k=0;k<20;k++){ x[k]=k-10d; y[k]=2d*Math.pow(x[k],2d)+3.5d*x[k]+3d; } GJPlotInterface p=GJScatter.createInstance(); p.setXData(x); p.setYData(y); gc.getView().add(p); gc.getView().autoScale(); // Describe the plot in a WebView using MathJax final JFXPanel jfx = new JFXPanel(); f.add(jfx, 0, 1., 1., 1., 0); // Add the web page on the JavaFX thread Platform.runLater(new Runnable() { @Override public void run() { final WebView browser = new WebView(); final WebEngine webEngine = browser.getEngine(); // This is a reference to a web page on the Waterloo web site webEngine.load("http://waterloo.sourceforge.net/MathJax/mathjax.html"); Scene s = new Scene(browser); jfx.setScene(s); webEngine.reload(); } }); } }); } }