Kawa makes it easy to build “rich client” (i.e. GUI) applications using JavaFX. For example the following program will print up a window with a button; clicking on the button will print a message on the console output about the event.
(require 'javafx-defs) (javafx-application) (javafx-scene title: "Hello Button" width: 600 height: 450 (Button text: "Click Me" layout-x: 25 layout-y: 40 on-action: (lambda (e) (format #t "Event: ~s~%~!" e))))
JavaFX support is builtin to the pre-built kawa-2.93.jar
.
It is easiest to use JDK 8; see below if you’re using JDK 7.
If you build Kawa from source, specify --with-javafx
on the
configure
command line (assuming you’re using JDK 8).
Assume the above file is HelloButton1.scm
, you can
run it like this:
$ kawa HelloButton1.scm
For more information and examples read this (slightly older) introduction, and this on animation.
The browse-kawa-manual
script in the doc
directory (source only)
uses JavaFX WebView to create a window for browsing the Kawa documentation.
JDK 8 ships with JavaFX, and it is in the default CLASSPATH
.
JDK 7 update 9 or later does have JavaFX included, but it is a separate
jfxrt.jar
which not in the default CLASSPATH
.
Thus you have to explicitly add jfxrt.jar
.
To run the previous HelloButton1.scm
you can do:
java -cp $JAVA_HOME/lib/jfxrt.jar:$KAWA_HOME/kawa.jar HelloButton1.scm
If you build Kawa from source, do:
$ ./configure --with-javafx=$JAVA_HOME --enable-kawa-frontend ...other-args...
The resulting Kawa binary sets up the path to jfxrt.jar
so you just need to do:
$ kawa HelloButton1.scm