lunes, 8 de septiembre de 2008

Diálogos y bloqueos de eventos

Estaba en implementar el modo en el que al abrir un nuevo frame se inhabilitara el frame que lo llama. Visto que no tenían lugar los métodos .setEnabled y otros propios de swing, me dispongo a implementar un modo satisfactorio. En JavaFX existe aunque no lo tenga en las herramientas del IDE NetBeans, una clase del paquete application que se llama Dialog y que es similar a la homónima en Swing. Sin embargo no contempla modos en los que se puede abrir la nueva ventana y siempre que se abre lo hace sin deshabilitar el frame que lo llama. Supongo que ésto tendrá que ver con que para los nodos jfx no existe la propiedad enabled, al menos no es accesible fácilmente. 

Recordando cómo funcionaba la política en Flex de paso de eventos entre jerarquía de nodos y habiendo encontrado una propiedad que en principio parecía escondida, llamada blockMouse aplicable para todos los nodos, he podido hacer que un evento sobre un nodo visible no permita recibirlo al nodo que se situa por debajo. De este modo puedo cubrir mi frame padre con un manto semitrasparente con la propiedad de bloqueo puesta a true y así impedir que se pueda interactuar con el padre mientras el hijo esté funcionando.