首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >changevalue侦听器spinner

changevalue侦听器spinner
EN

Stack Overflow用户
提问于 2017-02-22 07:51:08
回答 2查看 3.9K关注 0票数 1

你好,我想刷新一个标签,每个键在一个旋转器。我有以下代码:

代码语言:javascript
复制
spinner.valueProperty().addListener((obs, oldValue, newValue) -> {
        if (!"".equals(newValue)) {
            System.out.println("spiinerrrr");
        } 
    });

好的,当我在旋转器的箭头中单击时,这段代码是很好的,但是当我在旋转器的输入字段中单击并编写一个数字时,

代码语言:javascript
复制
System.out.println("spiinerrrr");

没有被执行。

为什么?我没有为组件旋转器找到一个更改值侦听器,而对于textfield,当我在textfield中编写时,下面的代码是好的:

代码语言:javascript
复制
textfield.textProperty().addListener((ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
        if (!"".equals(newValue)) {
            System.out.println("textfield");
        } 
    });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-22 08:11:07

可以将侦听器添加到textPropertySpinner中。

代码语言:javascript
复制
spinner.getEditor().textProperty().addListener((obs, oldValue, newValue) -> {
        if (!"".equals(newValue)) {
            System.out.println("spiinerrrr");
        } 
    });

否则,您必须在更新valueProperty之前按enter键。

如果您希望在焦点丢失时也更新valueProperty (不必按enter键),请向focusedProperty添加一个额外的侦听器

代码语言:javascript
复制
    spinner.focusedProperty().addListener((obs, oldValue, newValue) -> {
        if (newValue == false) {
            this.increment(0); 
        } 
    });
票数 2
EN

Stack Overflow用户

发布于 2017-02-22 08:20:32

使用getEditor()方法访问旋转器的TextField,然后添加侦听器:

代码语言:javascript
复制
Spinner<String> sp = new Spinner<>(FXCollections.observableArrayList("aaa", "bbb", "ccc"));
sp.setEditable(true);
sp.getEditor().textProperty().addListener((ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
    System.out.println(newValue);
});

如果需要知道,用户何时输入新值,则:

代码语言:javascript
复制
sp.getEditor().setOnAction(e -> {
    System.out.println(sp.getEditor().getText());
}); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42385584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档