Reflection effect renders a reflected version of the input below the actual input content.
Reflection class provides following constructors to define Reflection instance.
public Reflection()
public Reflection(double topOffset, double fraction, double topOpacity, double bottomOpacity)
topOffset: specifies the distance between the bottom of the input and the top of the reflection
fraction: specifies the fraction of the input that is visible in the reflection
topOpacity: specifies the opacity of the reflection at its top extreme
bottomOpacity: specifies the opacity of the reflection at its bottom extreme
Example
<Text fx:id = "text1" text="Learning JavaFX" fill="lightgreen"
style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"
stroke="darkblue" strokeWidth="2"
x = "50" y = "50"
effect="$reflection1">
<Reflection fx:id = "reflection1" topOffset="0.3" fraction="1.0" topOpacity="0.2" bottomOpacity="0.5"/>
</Text>
Find the below working application.
reflectionDemo.fxml
<?import javafx.scene.*?>
<?import javafx.scene.shape.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.effect.Reflection?>
<Group xmlns:fx="http://javafx.com/fxml" fx:controller="com.sample.app.effects.controller.ReflectionController" fx:id="group1" >
<Text fx:id = "text1" text="Learning JavaFX" fill="lightgreen"
style="-fx-font-weight: bold; -fx-font-size: 50; -fx-font-family: Verdana; -fx-font-style: italic"
stroke="darkblue" strokeWidth="2"
x = "50" y = "50"
effect="$reflection1">
<Reflection fx:id = "reflection1" topOffset="0.3" fraction="1.0" topOpacity="0.2" bottomOpacity="0.5"/>
</Text>
</Group>
ReflectionController.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 ReflectionController implements Initializable {
@FXML
private Text text1;
@Override
public void initialize(URL location, ResourceBundle resources) {
}
}
ReflectionDemo.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 ReflectionDemo extends Application {
private static final String FXML_FILE = "/reflectionDemo.fxml";
private static final String STAGE_TITLE = "Reflection 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.LIGHTSKYBLUE);
primaryStage.setTitle(STAGE_TITLE);
primaryStage.setScene(scene);
primaryStage.show();
}
}
Output
Note.
Reflection of a Node with a Reflection effect installed will not respond to mouse events or the containment methods on the Node.
Previous Next Home
No comments:
Post a Comment