Sapphire JavaFX (SFX)

A JavaFX Application Framework for Scala User.

This project replaces sapphire-core and sapphire-extension.

It provides a solid base for Rapid Application Development with JavaFX and Scala and is a good place for start development.

Examples of using ScalaFX and JFoenix are provided.

Also there is an example of using it with a CDI Framework (Deltaspike).

If you like to try an easy way to setup a desktop app with scala, give it a try.


I started JavaFX GUI develpment with the project sapphire-core, because for every application almost the same pattern were needed.

As my projects need better datalist support and more stuff, i created another project named sapphire-extension and called it experimental.

With the time i wanted to have all code, demos and showcase to be at one place. This was the start of sapphire-javafx.

All data-handling was refactored out in another project called sapphire-data, because this date and expression handling is also useful in non JavaFX projects.

This project replaces sapphire-core and sapphire-extension.

At this time i decided to add a clear namespace prefix: SFX (for Sapphire JavaFX).


Documentation under


A showcase can be found in the showcase folder inside this project.

The showcase show some of the common pattern used by this project.

Migrate from sapphire-core

Migration from sapphire-core (and sapphire-extension) by replace:

sapphire.core (sapphire.extension)



This should make all problems in packages work again.


Scala CI



Giter8 Template

Giter8 template: sapphire-sbt.

Cross Build

Build and tested against Scala 2.12/2.13 and JDK 11/12




Apache 2 License.



Simple JavaFX application with controller composition, controller exchange, ...

sbt run-tutorial


JavaFX Login demo enhanced by sapphire-core

sbt run-login


spphire-core with ScalaFX and CDI (Deltaspike).

sbt run-issues

Multiple Windows

usage of multiple window controller


Showcase Demo as visual reference for sapphire-core key concepts.

JFoenix Demo

JFoenix Demo

Technology Stack

Java JDK 11/12

Sapphire runs agains the latest JDK 11/12 version.


Java UI Application Framework as replacement for Swing.

Sapphire depends on OpenJFX 12

Optional Dependency Injection (Issues Demo)

Sapphire use Apache Deltaspike as CDI Abstraction Layer (1.9.x).

The default implementation depends on Apache OpenWebBeans (2.0.x).

Expression Language

Expressions are resolved by EL 3 Tomcat Expression Language.

ScalaFX (optional dependency)

A DSL for JavaFX written in Scala.

ScalaFX Website

ScalaFX plays very nice on top of sapphire-core applications.


sapphire-java makes rapid UI Development easy. Multiple pre-build pattern help to fulfill most data centric parts. Demo applications and showcase available as blueprints.

Application Environment

  • Application Controller
  • UI Controller loading
  • FXML Loading
  • Hot Reloding

Bean Enhancement

  • Every Java / Scala Bean can be used for FXBean
  • FXBean has additional support for java/scala Maps
  • FXBean resolves Expressions on bean
  • FXBean creates Properties needed for Binding on demand
  • FXBean has change management by default

Scala JavaFX Bean Binding

  • Bindings by form id
  • Binding with converter
  • Adapter Pattern (FXBean Adapter)


  • ContentManager for component exchange
  • View Transitions
  • Controller Lifecycle
  • Node Locator
  • DataTable Controller (Filter Support)
  • Master/Detail Controller

FXML Support

  • Easy Connect FXML with ViewController
  • Different FXML path options
  • Expression Language Support
  • Custom Table Cell / Column Factories

UI Widgets

  • Searchable DataList
  • Dual DataList


sapphire-javafx is deployed on maven central.


JetBrains is supporting this open source project with:

Intellij IDEA