2014-05-10 4 views
0

Code JavaFX.JavaFX: pourquoi ne peut être compiler peu importe quel genre de `changeListener` je suis passé à` textArea.getKeyPressedProperty() addListener`

public class MyController implements Initializable { 
    @FXML 
    private TextArea editor; 

    @Override 
    public void initialize(URL url, ResourceBundle resourceBundle) { 

     editor.onKeyReleasedProperty().addListener(new ChangeListener<KeyEvent>() { 
      @Override 
      public void changed(ObservableValue<? extends KeyEvent> o, KeyEvent oldVal, KeyEvent newVal) { 
       System.out.println("changed!"); 
      } 
     }); 
    } 
} 

Ce code ne peut être compilé sur la lignes de new ChangeListener..., et l'erreur est:

Can't resolve method 'addListener 
    (javafx.beans.value.ChangeListener<javafx.scene.input.KeyEvent>>)' 

j'ai changé encore et encore le code, mais je ne peux pas trouver un moyen de faire la compilation.

(j'utilise IntelliJ IDEA-13 + jdk 1,7)

+0

@assylias, ne fonctionne pas – Freewind

Répondre

1
editor.onKeyReleasedProperty().addListener(new ChangeListener<EventHandler<? super KeyEvent>>() { 
    @Override 
    public void changed(ObservableValue<? extends EventHandler<? super KeyEvent>> observable, EventHandler<? super KeyEvent> oldValue, EventHandler<? super KeyEvent> newValue) { 
    System.out.println("changed!"); 
    } 
}); 
+0

Cool! Mais nous devons spécifier '? super' en Java, semble un peu étrange et ennuyeux. – Freewind

2

Êtes-vous sûr que vous voulez ajouter un écouteur à onKeyReleasedProperty() propriété?

Je suppose que vous cherchez pour

editor.addEventHandler(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() { 
    @Override 
    public void handle(KeyEvent event) { 
    } 
}); 

Ou bref comme

editor.setOnKeyReleased(new EventHandler<KeyEvent>() { 
    @Override 
    public void handle(KeyEvent event) { 
    } 
}); 

Sinon, la réponse de assylias est correcte.

+0

Vous avez raison, je me suis vite retrouvé utilisé une mauvaise méthode. Mais je me demande toujours comment le rendre compilable – Freewind

Questions connexes