Monday, July 22, 2013

JavaFX example: apply Shadow effect

JavaFX example: apply Shadow effect
JavaFX example: apply Shadow effect
Further work on last example JavaFX: Move node to front, DropShadow effect will be added in Circles while moving. To remove the DropShadow effect, call setEffect(null) method of the node.



Example code:

package javafx_drawsomething;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Cursor;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.BlurType;
import javafx.scene.effect.DropShadow;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

/**
* @web http://java-buddy.blogspot.com/
*/
public class JavaFX_DrawSomething extends Application {

Circle circle_Red, circle_Green, circle_Blue;
double orgSceneX, orgSceneY;
double orgTranslateX, orgTranslateY;

DropShadow dropShadow;

@Override
public void start(Stage primaryStage) {

//Create Circles
circle_Red = new Circle(50.0f, Color.RED);
circle_Red.setCursor(Cursor.HAND);
circle_Red.setOnMousePressed(circleOnMousePressedEventHandler);
circle_Red.setOnMouseDragged(circleOnMouseDraggedEventHandler);

circle_Green = new Circle(50.0f, Color.GREEN);
circle_Green.setCursor(Cursor.MOVE);
circle_Green.setCenterX(150);
circle_Green.setCenterY(150);
circle_Green.setOnMousePressed(circleOnMousePressedEventHandler);
circle_Green.setOnMouseDragged(circleOnMouseDraggedEventHandler);

circle_Blue = new Circle(50.0f, Color.BLUE);
circle_Blue.setCursor(Cursor.CROSSHAIR);
circle_Blue.setTranslateX(300);
circle_Blue.setTranslateY(100);
circle_Blue.setOnMousePressed(circleOnMousePressedEventHandler);
circle_Blue.setOnMouseDragged(circleOnMouseDraggedEventHandler);

Group root = new Group();
root.getChildren().addAll(circle_Red, circle_Green, circle_Blue);

primaryStage.setResizable(false);
primaryStage.setScene(new Scene(root, 400,350));

primaryStage.setTitle("java-buddy");
primaryStage.show();

dropShadow = new DropShadow();
dropShadow.setBlurType(BlurType.GAUSSIAN);
dropShadow.setColor(Color.BLACK);
dropShadow.setOffsetX(5.0);
dropShadow.setOffsetY(5.0);
dropShadow.setRadius(10.0);

circle_Red.setOnMouseReleased(circleOnMouseReleasedEventHandler);
circle_Green.setOnMouseReleased(circleOnMouseReleasedEventHandler);
circle_Blue.setOnMouseReleased(circleOnMouseReleasedEventHandler);
}

public static void main(String[] args) {
launch(args);
}

EventHandler<MouseEvent> circleOnMousePressedEventHandler =
new EventHandler<MouseEvent>() {

@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();
((Circle)(t.getSource())).setEffect(dropShadow);
}
};

EventHandler<MouseEvent> circleOnMouseDraggedEventHandler =
new EventHandler<MouseEvent>() {

@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);
}
};

EventHandler<MouseEvent> circleOnMouseReleasedEventHandler =
new EventHandler<MouseEvent>() {

@Override
public void handle(MouseEvent t) {
((Circle)(t.getSource())).setEffect(null);
}
};
}


No comments:

Post a Comment