O programa mostra uma criação de binding por estar diretamente estendida ao DoubleBinding e utilizar para calcular a área do retângulo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
package main.java.br.com.cursojavanow; import javafx.beans.binding.DoubleBinding; import javafx.beans.property.DoubleProperty; import javafx.beans.property.SimpleDoubleProperty; public class DirectExtensionExample { public static void main(String[] args) { System.out.println("Constructing x with value 2.0."); final DoubleProperty x = new SimpleDoubleProperty(null, "x", 2.0); System.out.println("Constructing y with value 3.0."); final DoubleProperty y = new SimpleDoubleProperty(null, "y", 3.0); System.out.println("Creating binding area" + " with dependencies x and y."); DoubleBinding area = new DoubleBinding() { { super.bind(x, y); } @Override protected double computeValue() { System.out.println("computeValue()" + " is called."); return x.get() * y.get(); } }; System.out.println("area.get() = " + area.get()); System.out.println("area.get() = " + area.get()); System.out.println("Setting x to 5"); x.set(5); System.out.println("Setting y to 7"); y.set(7); System.out.println("area.get() = " + area.get()); } } |
Nós estendemos a classe DoubleBinding para sobrescrever apenas o método abstrato computeValue() para calcular a área do retângulo com o lado x e y.
Podemos também chamar o método da super classe bind() para fazer as propriedades de x e y nossa dependência. A saída do programa será essa:
1 |
Constructing x with value 2.0. |
1 |
Constructing y with value 3.0. |
1 |
Creating binding area with dependencies x and y. |
1 |
computeValue() is called. |
1 |
area.get() = 6.0 |
1 |
area.get() = 6.0 |
1 |
Setting x to 5 |
1 |
Setting y to 7 |
1 |
computeValue() is called. |
1 |
area.get() = 35.0 |
Observe que computeValue () é chamado apenas uma vez quando chamamos area.get() duas vezes seguidas.
Fonte: The Definitive Guide to Modern Java Clients with JavaFX
Deixe um comentário