Capacitor3.java
// Capacitor2.java import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.*; import javafx.scene.paint.*; import javafx.scene.shape.*; import javafx.scene.input.* ; import javafx.collections.*; import javafx.geometry.Point2D; public class Capacitor3 { double xpos, ypos; double angle; Color clr; Group grp = new Group(); double orgSceneX, orgSceneY, orgTranslateX, orgTranslateY; Capacitor3() { clr = Color.RED; xpos = 0.0; ypos = 0.0; angle = 0.0; } void setAngle(double angle) { this.angle = angle; grp.setRotate(-angle); } public void setPosition(double x, double y) { xpos = x; ypos = y; grp.setTranslateX(xpos); grp.setTranslateY(-ypos); } public boolean contains(Point2D pt) { Point2D local = grp.screenToLocal(pt); return grp.contains(local); } public String toString() { return "loc " + xpos + " " + ypos; } public void draw(Group parent) { double resc = 0.1; grp.setScaleX(resc); grp.setScaleY(resc); Rectangle rb = new Rectangle(-2.5,-1.5,5.0,3.0); rb.setFill(Color.TRANSPARENT); double res = parent.getScaleX(); Path p = new Path(); ObservableList<PathElement> pl = p.getElements(); double [] xp = { 0.5, 0.7, 0.9 }; double [] yp = { 1.3, 1.4, 1.5 }; pl.add(new MoveTo(-2.5,0.0)); pl.add(new LineTo(-0.5,0.0)); pl.add(new MoveTo(-0.5,-1.5)); pl.add(new LineTo(-0.5,1.5)); pl.add(new MoveTo(0.5,-1.0)); pl.add(new LineTo(0.5, 1.0)); pl.add(new CubicCurveTo(xp[0],yp[0],xp[1],yp[1],xp[2],yp[2])); pl.add(new MoveTo(0.5,-1.0)); pl.add(new CubicCurveTo(xp[0],-yp[0],xp[1],-yp[1],xp[2],-yp[2])); pl.add(new MoveTo(0.5,0.0)); pl.add(new LineTo(2.5,0.0)); ObservableList<Node> ol = grp.getChildren(); p.setStrokeWidth(20/res); p.setStroke(clr); p.setStrokeLineCap(StrokeLineCap.ROUND); ol.addAll(rb,p); parent.getChildren().add(grp); grp.setCursor(Cursor.CROSSHAIR); grp.setOnMousePressed( e -> { Point2D pt = grp.getParent().sceneToLocal(e.getSceneX(),e.getSceneY()); orgSceneX = pt.getX(); orgSceneY = pt.getY(); orgTranslateX = xpos; orgTranslateY = ypos; } ); grp.setOnMouseDragged( e -> { Point2D pt = grp.getParent().sceneToLocal(e.getSceneX(),e.getSceneY()); double offsetX = pt.getX() - orgSceneX; double offsetY = pt.getY() - orgSceneY; setPosition(orgTranslateX+offsetX,orgTranslateY-offsetY); } ); } }
Maintained by John Loomis, updated Mon Mar 05 12:00:17 2018