ScalaFX 12.0.2-R18 Released

ScalaFX 12.0.2-R18 was tested against JavaFX 12.0.8. Main improvements are changes to support Scala 2.13, while maintaining compatibility with Scala 2.12, 2.11, and 2.10. This release was tested to work with Java 11 and Java 12.

New Features:

Bug fixes:

  • Issue #310: Call to Axis.invalidateRange results in StackOverflowError

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub. Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

ScalaFX 12.0.1-R17 Released

ScalaFX 12.0.1-R17 was tested against JavaFX 12.0.1. It contains changes to better support JavaFX 12. It includes features from recently released versions 8.0.192-R14.

  • PR #293 Add all missing properties for Bounds (thanks to Romain DEP.)
    • added getCenterX
    • added getCenterY
    • added getCenterZ
  • Issue #291: Remove use of JavaConversions in the code
  • Issue #303: Support JavaFX 12
  • Issue #302: Support new MouseButton constants added in JavaFX 12 #302

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub. Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

ScalaFX 8.0.192-R14 Released

ScalaFX 8.0.192-R14 was tested against JavaFX 8.0u192. It contains bug fixes. Scala 2.10, 2.11, and 2.12 are supported.

Bug fixes:

To use ScalaFX add following to your SBT:

  libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.192-R14"

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub. Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

ScalaFX 11-R16 Released

ScalaFX 11-R16 was tested against JavaFX 11. It contains changes to better support JavaFX 11. It includes features from recently released versions 8.0.181-R13 and 10.0.2-R15.

End user visible features:

  • Issue #185: Correct implementation of “Enum” classes.
  • Issue #288 Add wrappers for new Spinner properties in JavaFX 11

Internal changes:

  • Issue #287 Add support for building with Java 11
  • Issue #289 Exclude JavaFX 11 OS dependent libraries when publishing binaries

To use ScalaFX with Java 11 add following to your SBT:

// 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
)

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub. Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

ScalaFX 10.0.2-R15 Released

ScalaFX 10.0.2-R15 was tested against JavaFX 10.0.2. It contains changes to better support JavaFX 10.

New features, many provided by Romain DEP:

  • Add missing public static methods for Font: loadFonts(url), loadFonts(stream)
  • Add missing properties for Node: viewOrder
  • Add missing public static methods for Platform: requestNextPulse, startup, enterNestedEventLoop, exitNestedEventLoop, isNestedLoopRunning
  • Add missing properties for Window: renderScaleX, renderScaleY, outputScaleX, outputScaleY, forceIntegerRenderScale
  • Add missing properties for MenuButton: onHiding, onShowing, onShown, onHidden
  • Add missing properties for Spinner: promptText
  • StyleConverter: wrap the StringStore class
  • Add public static methods for StyleConverter: readBinary, clearCache
  • Add missing properties for TabPane: tabDragPolicy
  • Add missing properties for Text: caretBias, caretPosition, caretShape, selectionEnd, selectionFill, selectionShape, selectionStart
  • Add missing properties for Tooltip: hideDelay, showDelay, showDuration

To use ScalaFX add following to your SBT:

  libraryDependencies += "org.scalafx" %% "scalafx" % "10.0.2-R15"

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub. Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

ScalaFX 8.0.181-R13 Released

ScalaFX 8.0.181-R13 was tested against JavaFX 8.0u181. It contains bug fixes. Scala 2.10, 2.11, and 2.12 are supported.

Bug fixes:

  • Issue #269: + concat Binding Expressions function of class StringExpression not working as intended. Thanks to PR from kdallen25 #282.
  • Issue #271: Value members in object BackgroundPosition have the wrong type.

To use ScalaFX add following to your SBT:

  libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.181-R13"

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub. Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

ScalaFX 8.0.144-R12 Released

ScalaFX 8.0.144-R12 was tested against JavaFX 8.0u144. It is contains new features and bug fixes. Scala 2.10, 2.11, and 2.12 are supported.

New features and improvements:

  • Issue #46 Missing wrappers for ReadOnly[Collection]Wrappers enhancement imported
  • Issue #53 Missing wrappers for ReadOnly[Collection]Property enhancement imported
  • Issue #54 Missing wrappers for beans.binding.[Collection]Expression enhancement imported
  • Issue #174 Implement wrappers for javafx.collections.transformation classes SFX-8
  • Issue #255 Add missing constructor for MouseEvent

Bug fixes:

  • Issue #262 TextFieldListCell.converter_=(c) method does not work. Thanks to PR from atrosinenko.
  • Issue #267 In Image constructor, requestedWidth is passed instead of requestedHeight. Thanks to PR from KSwordOfHaste.

To use ScalaFX add following to your SBT:

  libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.144-R12"

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub. Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

ScalaFX 8.0.102-R11 Released

ScalaFX 8.0.102-R11 was tested against JavaFX 8.0u102. It is contains new features and bug fixes. Scala 2.10, 2.11, and 2.12 are supported.

New features and improvements:

  • Issue #239 return subscription from onChange like the rest of observable collections. Thanks to PR from Piotr Mardziel (piotrm0)
  • Issue #244 Add Selector creation with provided orientation enhancement.
  • Issue #245 Support Scala 2.12.0 and ScalaTest 3.

Bug fixes:

  • Issue #240 Text.strikethrough_=(v: Boolean) doesn’t work. Thanks to PR from MamoruAsagami.
  • Issue #241 Shape.stroke_=(v: Paint) doesn’t accept null as v. Thanks to PR from MamoruAsagami.
  • Issue #242 Some classes, like Clipboard, have incorrect links to corresponding JavaFX documentation.

To use ScalaFX add following to your SBT:

  libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.102-R11"

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub. Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

Bindings with arbitrary expressions

ScalaFX v.8.0.92-R10 brings ability to create bindings using custom expressions. For instance, you can binding expression that converts strings to lower case:

import scalafx.beans.property.StringProperty

val a = new StringProperty()
val b = Bindings.createStringBinding(
          () => Option(a.value).getOrElse("").toLowerCase(), a)

a.value = "HEllO"
println("a: " + a.value)
println("b: " + b.value)

Running the above will result in output:

a: HEllO
b: hello

ScalaFX 8.0.92-R10 Released

ScalaFX 8.0.92-R10 was tested against JavaFX 8.0u92. It is contains some new features and bug-fix release. Scala 2.10, 2.11, and 2.12 are supported.

Compatibility braking changes:

  • Issue #107: Remove code that was deprecated before release of ScalaFX 1.0.0 M1

New features and improvements:

Bug fixes:

  • Issue #69: SFX-8: ColorfulCircles and SimpleColorfulCircles demos fail.
  • Issue #184: ObservableBuffer.Change has no generic type parameters, while the majority of its children do.
  • Issue #217: NPE when calling Node#snapshot
  • Issue #219: WritableImage#pixelWrit should be pixelWriter.
  • Issue #220: Scene’s onMouseDrag* setters have incorrect type parameters, jfxsi.MouseEvent instead jfxsi.MouseDragEvent.
  • Issue #221: Some type constraints in methods using jfxe.EventHandler arguments have incorrect variance.
  • Issue #222: Some setter are defined with _(...) instead of _=(...).
  • Issue #233: Problem with StringProperty.concat.
  • Issue #236: Importing scalafx.Includes._ breaks cellFactory creation.

To use ScalaFX add following to your SBT:

  libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.60-R10"

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub. Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

ScalaFX 8.0.40-R8 Released

ScalaFX 8.0.60-R9 was tested against JavaFX 8.0u60. This is primarily compatibility upgrade (for new JavaFX 8.0u60 API) and bug-fix release.

Compatibility braking changes:

  • Issue #208: Support changes in Java 8 u60 API - ChoiceBox, MenuButton, …

New features and improvements:

  • Issue #188: Add helper methods for adding buttons.
  • Issue #192: Add wrappers for Dragboard methods added in JavaFX 8.

Bug fixes:

  • Issue #189: TableView.columnResizePolicy does not accept CONSTRAINED_RESIZE_POLICY.
  • Issue #190: Convenience methods for Clipboard assignment don’t work. See examples of usage in new ScalaDoc.
  • Issue #193: Method Clipboard.Files should start with lower case f.
  • Issue #197: MultipleSelectionModel.selected* methods should return ScalaFX ObservableBuffer.
  • Issue #199: TableColumn should allow assignment of predefined cell factories.
  • Issue #205: Calling scalafx.scene.Node.localToParentTransform / localToSceneTransform results in StackOverflow exception.
  • Issue #214: Infinite recursion in scalafx.scene.Node#snapshot(callback, params, image).
  • Issue #215: Incorrect assignment in scalafx.stage.PopupWindow#consumeAutoHidingEvents.

To use ScalaFX add following to your SBT:

libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.60-R9"

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub.
Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

ScalaFX 8.0.40-R8 Released

ScalaFX 8.0.40-R8 was tested against JavaFX 8.0.40. This release adds wrappers for new features in JavaFX 8u40.

  • Compatibility braking changes:
    • Issue #163: content property naming conflict with JavaFX 8u40. Usage of content property in ScalaFX where it was referring to children property in JavaFX was deprecated in v.8.0.31-R7, and is now removed in ScalaFX 8.0.40-R8. You need to use children to access childrenProperty in JavaFX, and content to access contentProperty.
    • To follow the same naming approach, use of content in Scene and SubScene was deprecated. You should use children instead.
  • New features (JavaFX 8u40):
    • Issue #162: Support Dialogs and Alerts. See examples in those this blog post
    • Issue #158: Add Spinner and SpinnerValueFactory classes. See examples in this blog post
    • Add TextFormatter and new properties in TextInputControl. See examples in those two blog posts.
    • Add new class VertexFormat.
    • Add wrappers for new properties in: LineChart, Node, Platform, ScrollPane, TriangleMesh.
    • Issue #160: Support new accessibility properties added to Node
    • Updated TreeItem constructors
  • Bug fixes:
    • Issue #180: Bindings.select* methods throw “property … doesn’t exists” exceptions.

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub.

ScalaFX 8.0.31-R7 Released

ScalaFX 8.0.31-R7 was tested against JavaFX 8.0.31. Improvements and bug fixes are mostly merged from ScalaFX 2 branch (except Issue #159).

  • Compatibility braking changes:
    • Issue #163: content property naming conflict with JavaFX 8u40. Usage of content property in ScalaFX where it was referring to children property in JavaFX was deprecated and will be removed in ScalaFX 8u40.\
    • Issue #164: Scala 2.9 is no longer supported starting with this release.
  • New features:
    • Issue #159: Add VBox and HBox constructors added in JavaFX 8
    • Issue #161: Add missing traits in scalafx.event: EventDispatchChain, EventDispatcher, EventTarget
    • Issue #168: Added wrappers for FormatStringConverter
    • Issue #171: ScalaDocs are now generated with links to sources
    • Issue #172: ScalaDocs are now generated with hierarchy diagrams
    • Issue #173: Added wrappers for SeparatorMenuItem and CustomMenuItem (thanks to Roman Hargrave)
  • Bug fixes:
    • Issue #154: TableView’s selectedItem not empty after clearing the selection
    • Issue #167: ListCell should inherit from IndexedCell
    • Issue #169: Observable buffer ignores update changes
    • Issue #178: When FileChooser.showOpenMultipleDialog() is used and user cancelled selection an NPE is thrown.

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub.

ScalaFX 2.2.76-R11 Released

ScalaFX 2.2.76-R11 was tested against JavaFX 2.2.76.

  • Compatibility braking changes:
    • Issue #163: content property naming conflict with JavaFX 8u40. Usage of content property in ScalaFX where it was referring to children property in JavaFX was deprecated and will be removed in ScalaFX 8u40.
    • Issue #164: Scala 2.9 is no longer supported starting with this release.
  • New features:
    • Issue #161: Add missing traits in scalafx.event: EventDispatchChain, EventDispatcher, EventTarget
    • Issue #168: Added wrappers for FormatStringConverter
    • Issue #171: ScalaDocs are now generated with links to sources
    • Issue #172: ScalaDocs are now generated with hierarchy diagrams
    • Issue #173: Added wrappers for SeparatorMenuItem and CustomMenuItem (thanks to Roman Hargrave)
  • Bug fixes:
    • Issue #154: TableView’s selectedItem not empty after clearing the selection
    • Issue #167: ListCell should inherit from IndexedCell
    • Issue #169: Observable buffer ignores update changes
    • Issue #178: When FileChooser.showOpenMultipleDialog() is used and user cancelled selection an NPE is thrown.

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub.

ScalaFX 8.0.20-R6 Released

Tested with JavaFX 8.0.20. Over 20 new wrappers, changes needed to support JavaFX 8.0 u20 (in some rare situations u20 may break existing code), bug fixes mostly merged from ScalaFX 2 branch:

  • Merge bug fixes and style improvements from ScalaFX 2.2.67-R10
  • Bug fixes:
    • There were some errors in test implementations.
    • Some wrappers were marked final.
  • New wrappers:
    • WebErrorEvent
    • SFXPanel, SwingFXUtils, SwingNode
    • StyleConverter, StyleOrigin, Stylable
    • WeakEventHandler
    • ResizeFeatureBase
    • TableFocusModel
    • ScrollToEvent
    • TablePositionBase. TableSelectionModel, TreeTableRow, SortEvent, TreeTableCell, TreeSortMode, TreeTablePosition
    • CheckBoxTreeTableCell, ChoiceBoxTreeTableCell, ComboBoxTreeTableCell and TextFieldTreeTableCell.
  • Add missing methods and constants in: HTMLEditor, WebEngine, WebView, PopupControl.
  • Issue #155: Upgrade JavaFX support to v.8.0_u20:
    • Remove methods from SwingFXUtils
    • Add new Stage property alwaysOnTop and userAgentStylesheet
    • Fixed test after some constructor convention changed.
    • PieChart.Data#node is now a property rather than a value accessor.
    • Add new methods: Node#contentBias()
    • Deprecate TreeView#nodeLevel, add add TreeView#treeItemLevel
    • Add KeyCombination#displayText
  • ScalaDoc improvements

Great thanks to all the contributors to this release: Rafael Afonso, Mike Allen, nigredo-tori, SwhGo_oN, Eric Zoerner, and Jarek Sacha.

For downloads visit ScalaFX on Sonatype.

ScalaFX 2.2.67-R10 Released

Tested with JavaFX 2.2.67. Mostly bug fixes and API style improvements:

  • Partially resolved issue #75 – Use Scala naming convention for constants.
  • Bug fixes
    • Issue #144: Add type parameter to default constructor argument in scalafx.scene.control.TableRow constructor
    • Issue #145: Fix assignment of TableView’s columnResizePolicy and rowFactory
    • Issue #147: LongProperty should be initialized with a Long value (instead of Int).
    • Issue #150: apply() methods in RadialGradient companion object should have return type RadialGradient, not Unit.
    • Issue #153: Implicit conversions SFX to/from JFX should allow null arguments

Great thanks to all the contributors to this release: Rafael Afonso, Mike Allen, nigredo-tori, SwhGo_oN, Eric Zoerner, and Jarek Sacha.

For downloads visit ScalaFX on Sonatype.

ScalaFX 2.2.60-R9 and 8.0.5-R5 Released

This the first set of releases after move of the ScalaFX project to GitHub. Here are changes common to all releases:

  • Refactored Color name constants to conform to Scala conventions. Now we have, for instance, Color.Blue instead of Java-like Color.BLUE. The old constants are deprecated and will be removed in a feature release.
  • Fixed issue 124. JFXApp now buffers all subclass construction/initialization code and executes it during application startup. (Previously, JFXApp didn’t fully implement the semantics of the scala.DelayedInit trait: it only buffered the construction code of the leaf sub-class (typically, the user’s application object).
  • Resolved Issue 126: Platform.runLater accepts closures with any return types.
  • Resolved Issue 125: Eliminate need for setting JAVA_HOME. It was used to point to location of JavaFX binaries. The binaries are now automatically located in the running JVM.
  • Upgrade to latest version of Scala (2.10.4 and 2.11.1).
  • Adjustments to the Duration class so that javafx.util.Duration instances are consistently wrapped within scalafx.util.Duration instances.
  • Added an auxiliary constructor to the Duration class.
  • Update to the KeyFrame.time method to wrap the retrieved javafx.util.Duration object with scalafx.util.Duration.
  • Added missing constructors to the EventType class.
  • Moved scalafx-hello-world sub-project to separate repo.

v.2.2.60-R9

ScalaFX 1.0.0 version changed to follow JavaFX it supports (last tested), currently 2.2.60. All changes mentioned above. Binaries are released for Scala 2.9.3, 2.10, and 2.11.

v.8.0.5-R5

Tested with Java 1.8.0 u5 (JavaFX 8.0.5). Binaries are released for Scala 2.10, and 2.11. All changes mentioned above plus:

  • Adjusted all Scaladoc entries so that they now link to JavaFX 8 API pages.
  • Added new ScalaFX wrappers for the JavaFX classes SkinBase and PseudoClass.
  • Made the ButtonBase class abstract (as the wrapped JavaFX ButtonBase class is itself abstract).
  • Added ScalaFX wrappers for JFX8 classes DateCell and DatePicker.
  • Added missing methods to the Track class. Deprecated the language method in AudioTrack.
  • Added wrapper for SubtitleTrack.
  • Added wrappers for classes in javafx.print package.

For downloads visit ScalaFX on Sonatype.

ScalaFX 1.0.0-R8 and 8.0.0-R4 Released

User visible

  • Version naming convention change to use R (release) instead of M (Milestone), to signify that releases are stable.
  • More fixes for use of code blocks in event handlers (similar to Issue 102 )
  • Fixed Issue 115 : EventHandlerDelegate#filterEvent should allow to remove created filters.
  • Resolved Issue 118 : Add scaladoc root page.
  • Resolved Issue 117 : Remove obsolete build files and documentation.
  • Resolved Issue 120 : Scene is missing two constructors.
  • Some code changes to support Scala 2.11 stricter compiler.

Contributor visible

  • Resolve Issue 116 - move settings from project/build.scala to build.sbt
  • Remove “sbt-idea” plugin since IDEA can now import SBT projects directly.
  • SBT is ScalaFX official build system, drop outdated Gradle and Maven files. It is difficult to maintain multiple build system support.
  • Fixed Issue 121 : Build script has some not needed resolvers.
  • Update ScalaTest? to v.2.1 - mostly to support testing in Scala 2.11

v.1.0.0.R8

Tested with Java 1.7.0 u51. All changes mentioned above. Binaries are released for Scala 2.9.3, 2.10, and 2.11.0-RC1.

v.8.0.0.R4

Tested with early release Java 1.8.0 b129 (final release preview of Java 8). All changes mentioned above plus:

  • Improvements to TriangleMeshDemo
  • DrawMode, CullFace are now using Scala naming convention for constants.
  • Resolved Issue 92 : SFX-8: Add wrapper for TextFlow and added TextFlowDemo.
  • Resolved Issue 99 : add wrappers for new classes in javafx.scene.layout: Background, BackgroundFill, BackgroundImage, BackgroundPosition, BackgroundRepeat, BackgroundSize, CornerRadii, BorderImage, BorderRepeat, BorderStroke, BorderStrokeStyle, BorderWidths.

Binaries are released for Scala 2.10. Scala 2.11.0-RC1 cannot compile current ScalaFX SFX-8 code yet.

For downloads visit ScalaFX on Sonatype.