package demos.components; import com.jfoenix.controls.JFXRippler; import com.jfoenix.effects.JFXDepthManager; import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.FlowPane; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class RipplerDemo extends Application { private static final String FX_BACKGROUND_COLOR_WHITE = "-fx-background-color:WHITE;"; private static int counter = 0; private static int step = 1; @Override public void start(Stage stage) { //TODO drop shadow changes the width and height thus need to be considered FlowPane main = new FlowPane(); main.setVgap(20); main.setHgap(20); Label label = new Label("Click Me"); label.setStyle(FX_BACKGROUND_COLOR_WHITE); label.setPadding(new Insets(20)); JFXRippler rippler = new JFXRippler(label); rippler.setEnabled(false); main.getChildren().add(rippler); label.setOnMousePressed((e) -> { if (counter == 5) { step = -1; } else if (counter == 0) { step = 1; } JFXDepthManager.setDepth(label, counter += step % JFXDepthManager.getLevels()); }); Label l1 = new Label("TEST"); l1.setStyle(FX_BACKGROUND_COLOR_WHITE); l1.setPadding(new Insets(20)); JFXRippler rippler1 = new JFXRippler(l1); main.getChildren().add(rippler1); JFXDepthManager.setDepth(rippler1, 1); Label l2 = new Label("TEST1"); l2.setStyle(FX_BACKGROUND_COLOR_WHITE); l2.setPadding(new Insets(20)); JFXRippler rippler2 = new JFXRippler(l2); main.getChildren().add(rippler2); JFXDepthManager.setDepth(rippler2, 2); Label l3 = new Label("TEST2"); l3.setStyle(FX_BACKGROUND_COLOR_WHITE); l3.setPadding(new Insets(20)); JFXRippler rippler3 = new JFXRippler(l3); main.getChildren().add(rippler3); JFXDepthManager.setDepth(rippler3, 3); Label l4 = new Label("TEST3"); l4.setStyle(FX_BACKGROUND_COLOR_WHITE); l4.setPadding(new Insets(20)); JFXRippler rippler4 = new JFXRippler(l4); main.getChildren().add(rippler4); JFXDepthManager.setDepth(rippler4, 4); Label l5 = new Label("TEST4"); l5.setStyle(FX_BACKGROUND_COLOR_WHITE); l5.setPadding(new Insets(20)); JFXRippler rippler5 = new JFXRippler(l5); main.getChildren().add(rippler5); JFXDepthManager.setDepth(rippler5, 5); StackPane pane = new StackPane(); pane.getChildren().add(main); StackPane.setMargin(main, new Insets(100)); pane.setStyle("-fx-background-color:WHITE"); final Scene scene = new Scene(pane, 600, 400); stage.setTitle("JavaFX Ripple effect and shadows "); stage.setScene(scene); stage.setResizable(false); stage.show(); } public static void main(String[] args) { launch(args); } }