JavaFX Effects

En JavaFX los effects pueden ser aplicados a los objetos Node, los effects producen un cambio en la apariencia visual del elemento al cual se aplican, disponemos de diversos tipos de effects como: blur, wrap, shadow, glow, etc., la clase Node posee un método llamado setEffect(Effect effect) que por defecto esta establecido a NULL.

La clase abstracta Effect representa un efecto y se encuentra en el paquete javafx.scene.effect.

image

En este ejemplo aplicamos tres effect a los siguientes elementos del scene, al Node Button le aplicamos DropShadow, al Text se le aplico un effect Reflection y el ComboBox lo decoramos con un GaussianBlur effect.

Button btn = new Button("Hello Effects");
btn.setEffect(new DropShadow());

Text txt = new Text("Text GLOW");
txt.setEffect(new Reflection());
txt.setFont(new Font("Arial", 14.0));

ComboBox<String> cbx = new ComboBox<>();
cbx.setItems(FXCollections.observableArrayList("Panama", "Chile", "Mexico"));
cbx.setEffect(new GaussianBlur(4.0));

Scene Builder es una buena herramienta para editar, crear y probar los distintos efectos que tenemos disponibles en JavaFX, podemos modificar gráficamente la configuración de cada uno de los efectos y ver en tiempo real el resultado.

scenebuilder effects

La clase Effect posee en método setInput(Effect effect) que nos permite aplicar una serie de efectos de manera sucesiva a un objeto Node, por ejemplo, ha este Button le aplicamos un DropShadow seguido podemos aplicar un GaussianBlur, por ejemplo, y obtener un resultado combinado de ambos efectos, debemos tener presente que el orden en que se aplican los efectos cambia el resultado final.

GaussianBlur gaussianBlur = new GaussianBlur(3.0);

DropShadow dropShadow = new DropShadow();
dropShadow.setColor(Color.BLUE);
dropShadow.setInput(gaussianBlur);

Button btn = new Button("Hello Effects");
btn.setEffect(dropShadow);

En Scene Builder hacemos clic sobre el botón que aparece a la derecha del botón con el nombre del effect, este despliega un menú donde seleccionaremos Replace Effect Input para agregar un nuevo Effect, si presionamos el botón de cada effect podremos modificar dicho effect.

javafx combinar effects

Proyecto en GitHub: Effects en JavaFX

Comentarios

Temas relacionados

Entradas populares de este blog

tkinter Grid

tkinter Canvas

Controles y Contenedores JavaFX 8 - I

Histogramas OpenCV Python