有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javajavafx:为什么不管我传递给'textArea'的是什么类型的'changeListener'都无法编译。getKeyPressedProperty()。addListener`

JavaFx代码:

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!");
            }
        });
    }
}

无法在new ChangeListener...行上编译此代码,错误为:

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

我一次又一次地修改代码,但我找不到一种方法让它编译

(我使用的是Intellij IDEA 13+jdk 1.7)


共 (2) 个答案

  1. # 1 楼答案

    确实要将侦听器添加到onKeyReleasedProperty()属性吗

    我猜你在寻找

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

    或者简而言之

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

    否则亚西尔亚斯的答案是正确的

  2. # 2 楼答案

    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!");
      }
    });