Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Extend JavaFX with advanced bindings, event streams, reducers, and synchronized reactive state.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-19 | ✓→✗ | ▼ Worse | 4% | 0% |
| case-01 | ✓→✓ | = Same ✓ | -5% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 10% | 0% |
Use this skill when core JavaFX properties are not enough and the application needs derived observable graphs, composed event streams, reducer-style state, or synchronized reactive pipelines.
javaimport javafx.beans.binding.Bindings; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.collections.FXCollections; import javafx.collections.transformation.FilteredList; import javafx.scene.control.ListView; import javafx.scene.control.TextField; import javafx.scene.layout.VBox; public class ReactiveFilterView extends VBox { private final StringProperty filter = new SimpleStringProperty(""); public ReactiveFilterView() { var input = new TextField(); var items = FXCollections.observableArrayList("alpha", "beta", "gamma", "delta"); var filtered = new FilteredList<>(items, item -> true); filter.bind(input.textProperty()); filter.addListener((obs, oldValue, newValue) -> filtered.setPredicate(item -> item.contains(newValue)) ); var status = new TextField(); status.textProperty().bind(Bindings.size(filtered).asString("Matches: %d")); status.setEditable(false); getChildren().addAll(input, status, new ListView<>(filtered)); } }
streams, reducer architectures, and synchronized state pipelines.
javafx-properties-bindings for plain Property, Binding, and listener usage.Other measured skills in the registry, with their headline benchmark lift.