2017-08-06 1 views
0

Je ne fais que passer de AWT à JavaFX et je me demande comment travailler avec focus. Pour exampe: En AWT j'ai écrit quelque chose comme ça:javaFX focusHandler?

Button bFocus = new Button("Focus"); 
bFocus.addFocusListener(new FocusListener() { 

     public void focusGained(FocusEvent e) { 
      System.out.println("Having the Focus"); 
     } 

     public void focusLost(FocusEvent e) { 
      System.out.println("Lost the Focus"); 
     } 
}); 

Mais comment ça marche dans JavaFX? J'ai essayé beaucoup de choses différentes, mais cela ne fonctionne pas ...

Répondre

1

JavaFX a une API qui définit observable properties avec lequel vous pouvez enregistrer des écouteurs et répondre quand ils changent. Presque tous les états qui appartiennent à des éléments d'interface utilisateur dans JavaFX sont représentés par ces propriétés, ce qui vous permet d'enregistrer un écouteur qui répond quand ils changent.

Ainsi, par exemple, la superclasse de tous les éléments de l'interface utilisateur, Node a un ReadOnlyBooleanProperty appelé focused, avec lequel vous pouvez enregistrer un écouteur:

Button bFocus = new Button("Focus"); 
bFocus.focusedProperty().addListener((obs, wasFocused, isNowFocused) -> { 
    if (isNowFocused) { 
     System.out.println("Having the Focus"); 
    } else { 
     System.out.println("Lost the Focus"); 
    } 
}); 
0

Je pense qu'il pourrait être utile de voir un exemple qui précise le ChangeListener comme une classe interne anonyme comme James_D mention ici.

TextField yourTextField = new TextField(); 
yourTextField.focusedProperty().addListener(new ChangeListener<Boolean>() 
{ 
    @Override 
    public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue) 
    { 
     if (newPropertyValue) 
     { 
      System.out.println("Textfield on focus"); 
     } 
     else 
     { 
      System.out.println("Textfield out focus"); 
     } 
    } 
}); 

J'espère que cette réponse est utile! Pourquoi répéter une réponse avec un motif plutôt périmé?

+0

Si vous voyez des avantages, veuillez les décrire :) – kleopatra