JavaFX TextArea 的 onChange 事件

17

开发者们好 :)

JavaFX 组件 TextArea 是否支持像 onTextChange 这样的事件?是的,我知道有 keyPressed、keyTyped...等事件,但是如果另一个“操作”会改变 TextArea(例如 txArea.setText("some text")),那么如何处理事件呢?

3个回答

55
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;

    textArea.textProperty().addListener(new ChangeListener<String>() {
        @Override
        public void changed(final ObservableValue<? extends String> observable, final String oldValue, final String newValue) {
            // this will run whenever text is changed
        }
    });

8
我更喜欢你的答案,而不是上面那个代码示例的答案。匆忙地给出最快的答案并不总是好的选择。 - hirikarate
6
这个能不能加到SceneBuilder里面,还是只能在代码里修改? - Czechnology

20
与JavaFX中的所有组件一样,只需将监听器添加到TextArea的 textProperty() 中即可。

7

使用Lambda表达式

textArea.textProperty().addListener((obs,old,niu)->{
    // TODO here
});

我对这个感到有些奇怪,直到我意识到更改监听器是属性添加监听器所期望的唯一内容。虽然我更喜欢(observable,oldVal,newVal)更具自我说明性。 - Josiah Yoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接