JavaFX define vários tipos padrões de entrada de eventos com o mouse, gestos, toques ou teclas. Essas entradas de eventos têm manipuladores específicos para serem utilizados.
Vamos ver como funciona um simples evento de clique de mouse. Vamos criar o manipulador e anexá-lo ao um node no nosso gráfico de scene. O comportamento do programa irá variar dependendo de qual node adquira o manipulador. Podemos configurar o clique do mouse para manipular o texto, elipse ou o stack pane node.
No exemplo é adicionado uma ação ao text node:
text.setOnMouseClicked(mouseEvent -> {
System.out.println(mouseEvent.getSource().getClass() + “ clicado.”);
}
Quando o usuário clicar no texto, o programa irá mostrar a linha:
class javafx.scene.text.Text clicado.
Se o usuário clicar no interior da janela (stack pane) ou dentro da elipse, nada irá acontecer. Se fizermos a mesma programação na elipse, quando clicarmos na elipse, veremos:
class javafx.scene.shape.Ellipse clicado.
Note que por causa do objeto text aparecer na frente da elipse no stack pane, clicando no objeto text o evento não é invocado. Isso porque existe a hierarquia dos nodes.
Isto significa, que mesmo que um node esteja dentro de outro, eles agem independentemente. No nosso caso, se você quiser que ambos os nodes respondam ao clique, você deve anexar o mesmo manipulador a ambos os nodes. Ou simplesmente anexar um manipulador no node stack pane.
Dessa maneira, qualquer clique que for dado no interior da janela irá aparecer a linha:
class javafx.scene.layout.StackPane clicado.
javafx.scene.control.Button.setOnMouseClicked()
Fonte: The Definitive Guide to Modern Java Clients with JavaFX
Deixe um comentário