Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/06/2012, 02:59
Avatar de UnaVezFuiPez
UnaVezFuiPez
 
Fecha de Ingreso: febrero-2012
Mensajes: 9
Antigüedad: 12 años, 2 meses
Puntos: 1
De acuerdo [Resuelto] ¿Cómo controlar la pérdida de foco de un elemento en JavaFX 2.X (.fxml)?

Bueno, aunque no ha contestado nadie, he estado rebuscando en otros foros y gracias a la ayuda de una amiga he dado con la solución. Como supongo que según se vaya extendiendo el uso de JavaFX a más gente le surgirá esta misma duda, la pongo aquí. De todas formas, si alguien sabe como hacerlo directamente (si es que se puede) en el archivo .fxml que lo ponga. Y si a alguien os sirve de ayuda, pues no cuesta nada dejar un mensajito de agradecimiento :)

Decir que esto hay que incluirlo en el archivo .java correspondiente al archivo .fxml

Lo primero, importar las clases necesarias:
Código:
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
Luego, dentro de la definición de la clase, definir la variable de tipo 'TextField' que hemos definido en el archivo .fxml:

Código:
public class VentanaPrincipal implements Initializable {

   ...

   @FXML
   private TextField dimX;

   ...
Después, dentro del método initialize, creamos un Listener a la propiedad focused, que detectará cuando el elemento pierde el foco:

Código:
   @Override    
   public void initialize(URL url, ResourceBundle rb) {

      ...

      dimX.focusedProperty().addListener(new ChangeListener<Boolean>() {
         @Override
         public void changed(ObservableValue<? extends Boolean> arg0, Boolean arg1, Boolean arg2) {
            //Controlamos cuando dimX pierde el foco
            if(!arg2){

               //Aquí va el código que queremos que se ejecute cuando dimX pierda el foco. 

            }
         }
      });

      ...