JavaFX: How to apply multiple Effects to a Node

While I was converting the PageFlow mode from Java3D into JavaFX for our Java PDF Viewer, one of the fun issues that I came across is how to apply multiple effects to a Node.

There is only one method to set effects on a node, and using the method more than once will overwrite the previous effect each time. The key is that you need to chain effects together. This is done by setting the input of the effects like so:

        ImageView imView = new ImageView();
        PerspectiveTransform pTrans = new PerspectiveTransform(100, 110, 400, 160, 400, 940, 100, 1060);
        Reflection ref = new Reflection();
        pTrans.setInput(ref);
        imView.setEffect(pTrans);

What this does is set the input of the PerspectiveTransform to be the result of applying the Reflection to the ImageView.

Be careful of the order in which you chain your effects because the order in which the effects are applied matters. It’s the difference between a nice outcome:

perspectiveRight

And a not so nice outcome!

perspectiveWrong

I have written several articles on converting our Java3D usage into JavaFX and you can read the other articles here.

  • Office to HTML5 Conversions
The following two tabs change content below.
Leon is a developer at IDRsolutions who focuses primarily on JPDF2HTML5 core and IDRViewer development, as well as making sure that the monthly releases go as planned. He can also be found working on the marketing side, interpreting analytics and helping make sure that IDRsolutions continues to grow.

Related Posts:

Leon Atherton

About Leon Atherton

Leon is a developer at IDRsolutions who focuses primarily on JPDF2HTML5 core and IDRViewer development, as well as making sure that the monthly releases go as planned. He can also be found working on the marketing side, interpreting analytics and helping make sure that IDRsolutions continues to grow.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>