Monday, July 22, 2013

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

[フレーム]

Subscribe to: Post Comments (Atom)

AltStyle によって変換されたページ (->オリジナル) /