It’s easy to implement a nice dragging effect in JavaFX, using the onMouseDragged event in conjunction with the bind operator (incremental and lazy evaluation of attributes operator).
import javafx.ui.canvas.*;import javafx.ui.*;import java.lang.System;class CircleDragging extends CompositeNode{attribute lx: Integer;attribute ly: Integer;}CircleDragging.lx = 0;CircleDragging.ly = 0;function CircleDragging.composeNode() =Group { transform:[] content:[ Circle { cx: bind lx cy: bind ly radius: 10 fill: red stroke: black strokeWidth: 10 onMouseDragged: operation(e:CanvasMouseEvent) { lx += e.localDragTranslation.x; ly += e.localDragTranslation.y; } }]};Frame { centerOnScreen: true visible: true height: 500 width: 500 title: "JavaFX - CircleDragging" onClose: operation() {System.exit(0);} content: ScrollPane { background: white view: Canvas { background: black cursor: DEFAULT content: [CircleDragging] } }}