Circle_MousePress_Drag1
  • Program lay out: Scene>HBox (root)>StackPane> Elemens(circle,image, transparent-circle)

  • Scene:: event : Eventhanlder within Scene
    EventHandler circleOnMousePressed =
            new EventHandler()
  • selectedImage.setFitHeight(60);
     selectedImage.setFitWidth(100);
       selectedImage.setImage(image1);
 
Code
package javafxtemplate1;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.effect.Bloom;
import javafx.scene.effect.BoxBlur;
import javafx.scene.effect.DropShadow;
import javafx.scene.effect.Glow;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
//port ExternalClass1; 

/**
 *
 * @author Manas14
 */

public class JavaFXTemplate1 extends Application {
   double orgSceneX, orgSceneY;
    double orgTranslateX, orgTranslateY;
     @Override
public void start(Stage primaryStage) {
 final ImageView selectedImage = new ImageView();   
 Image image1 = new Image
 (JavaFXTemplate1.class.getResourceAsStream("banner2B.jpg"));
 selectedImage.setFitHeight(60);
 selectedImage.setFitWidth(100);
   selectedImage.setImage(image1);
 
StackPane spane = new StackPane();
//Circle(double centerX, double centerY, double radius)
Circle circle1 = new Circle(250,250, 90, Color.GREEN);
Circle circle2 = new Circle(100,100,60);
circle2.setStroke(Color.YELLOW);
circle2.setFill(null);
circle2.setStrokeWidth(3);
circle2.setOnMousePressed(circleOnMousePressed);
circle2.setOnMouseDragged(circleOnMouseDragged);
//circle2.setArcWidth(25);
//circle2.setArcHeight(25);
 //spane.setLayoutX(250);spane.setLayoutY(250);
 // setMinSize width, height
 spane.setMinSize(350,200);
 spane.setStyle("-fx-padding: 10;" +"-fx-background-color: RED;"+
 "-fx-border-style: solid inside;" +
 "-fx-border-width: 4;" +
  "-fx-border-color: yellow;");
 spane.getChildren().addAll(circle1,selectedImage, circle2); 
 HBox root = new HBox( spane);
 root.setAlignment(Pos.CENTER);
 root.setSpacing(20);
 root.setStyle("-fx-padding: 10;" +
 "-fx-border-style: solid inside;" +
 "-fx-border-width: 4;" +
 "-fx-border-insets: 5;" +
 "-fx-border-radius: 5;" +
 "-fx-border-color: blue;");
 Scene scene = new Scene(root, 400, 250);
 primaryStage.setScene(scene);
 primaryStage.setTitle("Applying Effects");
 primaryStage.show();
    }

     public static void main(String[] args) {
        launch(args);
    }
  EventHandler circleOnMousePressed = 
        new EventHandler() {
 
        @Override
        public void handle(MouseEvent t) {
            orgSceneX = t.getSceneX();
            orgSceneY = t.getSceneY();
            orgTranslateX = ((Circle)(t.getSource())).getTranslateX();
            orgTranslateY = ((Circle)(t.getSource())).getTranslateY();
             
            ((Circle)(t.getSource())).toFront();
        }
    };
     
    EventHandler circleOnMouseDragged = 
        new EventHandler() {
 
        @Override
        public void handle(MouseEvent t) {
            double offsetX = t.getSceneX() - orgSceneX;
            double offsetY = t.getSceneY() - orgSceneY;
            double newTranslateX = orgTranslateX + offsetX;
            double newTranslateY = orgTranslateY + offsetY;
             
            ((Circle)(t.getSource())).setTranslateX(newTranslateX);
            ((Circle)(t.getSource())).setTranslateY(newTranslateY);
        }
    };
}
	
		
		
 
Runtime display:

Moving yellow circle: