import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.control.Slider;
var myVar: Number = 5;
Stage {
title: "Bind"
scene: Scene {
width: 250
height: 80
content: [
Vbox {
translateX: 10
translateY: 10
spacing: 5
content: [
Slider {
max: 10
value: bind myVar with inverse
}
Slider {
max: 10
value: bind myVar with inverse
}
]
}
]
}
}

public interface Listener {
void notifyChanged (int newValue);
}
public class JavaPart {
private int observerableValue;
public void setObserverableValue (int newValue) {
observerableValue = newValue;
Listener l = listener;
if (l! = null)
l.notifyChanged (newValue);
}
public int getObserverableValue () {
return observerableValue;
}
private Listener listener;
public void setListener (Listener l) {
listener = l;
}
}
public class JavaPartAdapter extends Listener {
public-init var javaPart: JavaPart;
init {
javaPart.setListener (this);
}
public var currentValue: Integer on replace oldValue {
if (currentValue! = oldValue) {
javaPart.setObserverableValue (currentValue);
}
}
public override function notifyChanged (newValue: Integer): Void {
currentValue = newValue;
}
}
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.control.Button;
import javafx.scene.Group;
var myVar: Integer = 5;
def adapter: JavaPartAdapter = JavaPartAdapter {
javaPart: new JavaPart ()
currentValue: bind myVar with inverse
};
Stage {
width: 200
height: 300
scene: Scene {
content: [
Button {
text: bind "Change {myVar}"
action: function () {
adapter.javaPart.setObserverableValue (77);
}
}
Button {
translateY: 25
text: bind "Change {adapter.currentValue}"
action: function () {
myVar = 999;
}
}
]
}
}



Source: https://habr.com/ru/post/92325/
All Articles