JavaFX TextArea onChange 事件

Posted

技术标签:

【中文标题】JavaFX TextArea onChange 事件【英文标题】:JavaFX TextArea onChange event 【发布时间】:2012-04-09 10:05:48 【问题描述】:

开发者们好日子 :)

JavaFX 组件 TextArea 是否支持某些事件,例如 onTextChange 或类似事件? 是的,我知道 keyPressed、keyTyped ......但是如果另一个“动作”在 TextArea 上发生变化(例如 txArea.setText("some text")),如何处理事件。

【问题讨论】:

【参考方案1】:

与所有 JavaFX 一样,只需将侦听器添加到 TextArea textProperty()

【讨论】:

【参考方案2】:
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
        
    );

【讨论】:

+1 票。对于代码示例,我更喜欢您的答案而不是上面的答案。急于给出最快的答案并不总是好的。 是否可以在 SceneBuilder 中添加这个,或者只是在代码中?【参考方案3】:

使用 Lambda 表达式

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

【讨论】:

我对此感到很奇怪,直到我意识到更改侦听器是属性对 addListener 的唯一期望。虽然我更希望 (observable, oldVal, newVal) 更加自我记录。

以上是关于JavaFX TextArea onChange 事件的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX:在进入 TextArea 时将插入符号/光标放在 TextArea 的末尾

JavaFX - TextArea 的掩码文本

带滚动条的只读 TextArea [JavaFx]

JavaFX - 限制 TextArea 行?

如何在 setText 之后滚动 JavaFX TextArea

如何禁用 TextArea (JavaFX) 中的文本选择?