TornadoFX cómo enlazar Node style (o styleClass) a una propiedad?

Considere el siguiente ejemplo:

class MainView : View("Example") { val someBooleanProperty: SimpleBooleanProperty = SimpleBooleanProperty(true) override val root = borderpane { paddingAll = 20.0 center = button("Change bg color") { action { // let's assume that new someBooleanProperty value is updated // from some API after button clicked // so changing style of the borderpane in action block // of the button is not the solution someBooleanProperty.value = !someBooleanProperty.value } } } } class Styles : Stylesheet() { companion object { val networking by cssclass() val green by cssclass() } init { networking { backgroundColor += Color.RED } green { backgroundColor += Color.GREEN } } } 

¿Cómo puedo cambiar dinámicamente el color de background del borderpane function de someBooleanProperty de someBooleanProperty (por ejemplo, ROJO cuando es true y VERDE cuando es false )? ¿Hay posibilidad de vincular la class CSS a una propiedad? ¿Hay alguna solución para hacer eso sin usar CSS (es decir, dentro de bloque de style , etc.)

Si desea alternar una class (agregar o eliminar una class basada en una propiedad booleana), puede usar la function Node.toggleClass(CssRule, ObservableValue<Boolean>) .

 val someBooleanProperty = SimpleBooleanProperty(true) ... borderpane { toggleClass(Styles.networking, someBooleanProperty) toggleClass(Styles.green, someBooleanProperty.not()) } 

Si, por otro lado, desea vincularse a un valor de class cambiante, puede usar la function Node.bindClass(ObservableValue<CssRule>) .

 val someClassyProperty = SimpleObjectProperty(Styles.networking) ... borderpane { bindClass(someClassyProperty) } 

A continuación, puede configurar la class a lo que desee.

  • TornadoFX con TestFX cierra la vista después de cada TestCase
  • TornadoFX - eliminar elemento con ContextMenu hacer clic derecho
  • El elemento TornadoFx ItemViewModel es nulo
  • Tornadofx Javafx - Cómo volver a cargar una vista / componente
  • TableView de Tornadofx usando comboBox y agregando FXEvent en los botones
  • Cómo cambiar la vista en TornadoFx
  • java.lang.NoSuchMethodException cuando intenta ejecutar la aplicación TornadoFX
  • preguntas sobre DI, ViewModel, etc.
  • Crea una vista arbitraria
  • TornadoFX: Type-Safe CSS con otras bibliotecas
  • java.lang.ClassNotFoundException: no encontró la class "com.my.app.example.Main" en la ruta: DexPathList