Wednesday 28 October 2020

JavaFx: DropShadow Effect

'DropShadow' class is used to renders a shadow of the given content behind the content with the specified color, radius, and offset.

 

DropShadow class provides below constructors to set effect.

 

public DropShadow()

public DropShadow(double radius, Color color)

public DropShadow(double radius, double offsetX, double offsetY, Color color)

public DropShadow(BlurType blurType, Color color, double radius, double spread, double offsetX, double offsetY)

radius: the radius of the shadow blur kernel

offsetX: the shadow offset in the x direction

offsetY: the shadow offset in the y direction

color: the shadow color

blurType: the algorithm used to blur the shadow

 

FXML to create a drop shadow effect on a Text UI control

    <Text fx:id = "text1" text="Learning JavaFX"  fill="white"

        style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"

        stroke="black" strokeWidth="2"

        x="50" y = "50" effect="$shadow1">

       

        <DropShadow fx:id = "shadow1" radius="5.0" color="gray"

            offsetX="6"

            offsetY="6"/>

    </Text>

 

Find the below working application.

 

dropShadow.fxml

<?import javafx.scene.*?>
<?import javafx.scene.shape.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.effect.*?>

<Group xmlns:fx="http://javafx.com/fxml" fx:controller="com.sample.app.effects.controller.DropShadowEffectController">

    <Text fx:id = "text1" text="Learning JavaFX"  fill="white"
        style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"
        stroke="black" strokeWidth="2" 
        x="50" y = "50" effect="$shadow1">
        
        <DropShadow fx:id = "shadow1" radius="5.0" color="gray" 
            offsetX="6"
            offsetY="6"/>
    </Text>
    
    <Text fx:id = "text2" text="Learning JavaFX"  fill="white"
        style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"
        stroke="black" strokeWidth="2" 
        x="50" y = "150" effect="$shadow1">
        
        <DropShadow fx:id = "shadow1" radius="5.0" color="gray" 
            offsetX="6"
            offsetY="-6"/>
    </Text>
    
    <Text fx:id = "text3" text="Learning JavaFX"  fill="white"
        style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"
        stroke="black" strokeWidth="2" 
        x="50" y = "250" effect="$shadow1">
        
        <DropShadow fx:id = "shadow1" radius="5.0" color="gray" 
            offsetX="-6"
            offsetY="6"/>
    </Text>
    
    <Text fx:id = "text4" text="Learning JavaFX"  fill="white"
        style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"
        stroke="black" strokeWidth="2" 
        x="50" y = "350" effect="$shadow1">
        
        <DropShadow fx:id = "shadow1" radius="5.0" color="gray" 
            offsetX="-6"
            offsetY="-6"/>
    </Text>
    
    
</Group>

 

DropShadowEffectController.java

package com.sample.app.effects.controller;

import java.net.URL;
import java.util.ResourceBundle;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.text.Text;

public class DropShadowEffectController implements Initializable {

    @FXML
    private Text text1;
    
    @FXML
    private Text text2;
    
    @FXML
    private Text text3;
    
    @FXML
    private Text text4;

    @Override
    public void initialize(URL location, ResourceBundle resources) {

    }

}

 

DropShadowDemo.java

package com.sample.app.effects;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class DropShadowDemo extends Application {

    private static final String FXML_FILE = "/dropShadow.fxml";
    private static final String STAGE_TITLE = "Drop Shadow Effect";

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

    }

    @Override
    public void start(Stage primaryStage) throws Exception {

        Parent root = (Parent) FXMLLoader.load(this.getClass().getResource(FXML_FILE));

        Scene scene = new Scene(root, 600, 400, Color.WHITE);

        primaryStage.setTitle(STAGE_TITLE);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}

Output

 


 

 

  

Previous                                                    Next                                                    Home

No comments:

Post a Comment