ScalaFX is a UI DSL written within the Scala Language that sits on top of JavaFX. This means that every ScalaFX application is also a valid Scala application. By extension it supports full interoperability with Java and can run anywhere the Java Virtual Machine (JVM) and JavaFX are supported.
There are four branches of ScalaFX: v.8.0 supporting JavaFX 8 (Java 8), v.10 supporting JavaFX 10 (Java 10), v.11 supporting JavaFX 11 (Java 11 or Java 10), and v.2.2 supporting JavaFX 2.x (Java 7).
ScalaFX binaries are published in the Maven Central repository: http://search.maven.org/#search|ga|1|scalafx
ScalaFX source code is using the SBT build system.
For information on building with SBT see README-SBT.txt
.
The official web site for ScalaFX is http://scalafx.org.
To use ScalaFX with SBT and Java 8 add following dependency (to use the latest scalafx you might need Java version at least 1.8.40):
libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.181-R13"
with Java 10 use:
libraryDependencies += "org.scalafx" %% "scalafx" % "10.0.2-R15"
Staring with Java 11 JavaFX is no longer part of Java distribution. In addition to ScalaFX, JavaFX binaries needs to be explicitly added to a project. JavaFX binaries depend on operating system used. Add following to SBT configuration:
// Add dependency on ScalaFX library
libraryDependencies += "org.scalafx" %% "scalafx" % "11-R16"
// Determine OS version of JavaFX binaries
lazy val osName = System.getProperty("os.name") match {
case n if n.startsWith("Linux") => "linux"
case n if n.startsWith("Mac") => "mac"
case n if n.startsWith("Windows") => "win"
case _ => throw new Exception("Unknown platform!")
}
lazy val javaFXModules = Seq("base", "controls", "fxml", "graphics", "media", "swing", "web")
libraryDependencies ++= javaFXModules.map( m =>
"org.openjfx" % s"javafx-$m" % "11" classifier osName
)
With Java 7 use:
libraryDependencies += "org.scalafx" %% "scalafx" % "2.2.76-R11"
The ScalaFX Organization page on GitHub contains several sample
project that illustrate use of ScalaFX.
The simplest one, and recommended to start with, is scalafx-hello-world
.
Snapshot releases are also regularly published on Sonatype Snapshots. To use a snapshot build you may need to add "Sonatype OSS Snapshots" resolver to you SBT configuration:
resolvers += Opts.resolver.sonatypeSnapshots
If you just want to download a recent snapshot build you can also use Travis CI build site https://travis-ci.org/scalafx/scalafx
This software licensed under BSD Open Source.
The License text for this software can be found in LICENSE.txt in the root folder of the project.
The following software is needed to build ScalaFX:
- SBT v.1.0.0 or better
- Scala - ScalaFX 8.0 builds with Scala 2.10.2 or newer. - ScalaFX 2.2 builds with either Scala version 2.9.3+, 2.10.+, or 2.11.+
It works with Windows, MacOS X and Linux ports.
The current project directory structure:
./archive
./project
./scalafx
./scalafx-demos
Where .
is a the root folder of the project.
The archive
folder is reserved for remnants of the previous single module
build system.
The scalafx
folder is the sub project for the ScalaFX Framework.
The scalafx-demos
is the sub project for the ScalaFX Framework Demonstrations (some are a bit out of date, help needed here :).
The project
folder is reserved for Scala SBT.
The current development is for ScalaFX 8.
The development is done on the master
branch.
Releases are done on the stable
branch.
Releases are tagged with version number.
Pull requests are only accepted off a brunch created from the master
branch.
When working on a pull request, create a separate branch for each feature or bug fix.
This way the main development branch is not blocked by a pull request and pull requests are easier to merge individually.
Forward looking development to support JavaFX 10+ is on branch 'SFX-10'.
The ScalaFX 2.2 development is no longer active.
For those who need it, the code is on the SFX-2
branch and past releases are on the SFX-2-stable
branch.
ScalaFX was originally created by Stephen Chin, Java Champion, Oracle JavaOne program chair; and Sven Reimers, a member of the Netbeans Dream Team.
The most up to date list of contributors to the project can be found on the Contributors page.
We request all the team members to follow the Typelevel Code of Conduct in our mailinglist, issue discussion, Gitter room or any of ScalaFX meetups.
For more info on Contribute, check our Contributing page.