package testing; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.scene.shape.Line; import jfxtras.labs.util.event.MouseControlUtil; import physics.Spring; /** * * @author Christoph Burschka <christoph@burschka.de> */ public class Oscillator extends Example { Circle a, b; public Oscillator() { a = new Circle(30, Color.RED); a.setLayoutX(WIDTH / 4); a.setLayoutY(HEIGHT / 2); b = new Circle(30, Color.BLUE); b.setLayoutX(3 * WIDTH / 4); b.setLayoutY(HEIGHT / 2); canvas.getChildren().add(a); canvas.getChildren().add(b); MouseControlUtil.makeDraggable(a); MouseControlUtil.makeDraggable(b); Line line = new Line(); line.setStroke(Color.BLACK); line.startXProperty().bind(a.layoutXProperty().add(a.translateXProperty())); line.startYProperty().bind(a.layoutYProperty().add(a.translateYProperty())); line.endXProperty().bind(b.layoutXProperty().add(b.translateXProperty())); line.endYProperty().bind(b.layoutYProperty().add(b.translateYProperty())); canvas.getChildren().add(line); line.toBack(); layout.addConnection(a, b, new Spring(WIDTH / 5, 100)); getSimulation().setFriction(0); } @Override public void reset() { a.setLayoutX(WIDTH / 4); a.setLayoutY(HEIGHT / 2); b.setLayoutX(3 * WIDTH / 4); b.setLayoutY(HEIGHT / 2); } @Override public String getTitle() { return "Oscillator"; } }