use canvasfx, std w = 800 h = 600 g = window("JavaFX Event handler example", w, h) addEventHandler(Events.MOUSE_MOVED, ::onMouseMoved) addEventHandler(Events.MOUSE_DRAGGED, ::onMouseMoved) addEventHandler(Events.KEY_PRESSED, def(e) { if (e.code == KeyCode.C) clearRect(0, 0, w, h) }) def onMouseMoved(e) { g.setFill(Color.rgb(rand(255), rand(255), rand(255), rand())) m = 1 + e.isPrimaryButtonDown + e.isSecondaryButtonDown radius = m * rand(30, 50) g.fillOval(e.x - radius/2, e.y - radius/2, radius, radius) }