当前位置: 首页 > 知识库问答 >
问题:

即使newValue==oldValue也激发更改事件的JavaFX ObjectProperty

墨高杰
2023-03-14

ObjectPropertyBase跳过值无效时NewValue==OldValue:

/**
 * {@inheritDoc}
 */
@Override
public void set(T newValue) {
    if (isBound()) {
        throw new java.lang.RuntimeException((getBean() != null && getName() != null ?
                getBean().getClass().getSimpleName() + "." + getName() + " : ": "") + "A bound value cannot be set.");
    }
    if (value != newValue) {
        value = newValue;
        markInvalid();
    }
}

问题:markinvalual()valueprivate,因此无法正确重写set(newValue)

问题:如何获得不执行(value!=newValue)检查的类型?

这个问题和这个问题有关。

共有1个答案

叶坚
2023-03-14

如何获得不执行(value!=newValue)检查的类型?

扩展SimpleObjectProperty(或ObjectPropertyBase)并重写其Set方法并跳过检查。虽然您不能自己调用markinvalce,但是该方法并没有做很多您不能做的事情:

class InvalidatingObjectProperty<T> extends SimpleObjectProperty<T> {

    @Override
    public void set(T newValue) {
        if (isBound()) {
            throw new java.lang.RuntimeException(
                    (getBean() != null && getName() != null ? getBean().getClass().getSimpleName() + "." + getName() + " : " : "")
                            + "A bound value cannot be set.");
        }
        invalidated();
        fireValueChangedEvent();
    }
}

我们缺少的是将valid设置为false。但是,唯一重要的地方是它的toString方法,您也可以重写该方法。

 类似资料:
  • 当用户滑动滑块时,我试图触发一个事件,当滑动停止时,该值会更改。根据jQuery文档,对于这种情况,事件是理想的选择。所以我正在尝试: 然而,我观察到,当我向右拖动滑块并再次将其拖回起点(页面加载时滑块的初始位置)时,警报仍会触发。这是jQuery错误吗?如果没有,我该如何解决这个问题?

  • 问题:为什么用“oldValue”调用ChangeListener ObservableMap是NewValue的副本? 输出:

  • 本文向大家介绍深入理解vue.js中$watch的oldvalue与newValue,包括了深入理解vue.js中$watch的oldvalue与newValue的使用技巧和注意事项,需要的朋友参考一下 $watch中的oldvalue和newValue 大家都知道,在vue.js中给我们提供了$watch的方法来做对象变化的监听,而且在callback中会返回两个对象,分别是oldValue和n

  • 问题:为什么用“oldValue”调用ChangeListener ObservableMap是newValue的副本? 输出:

  • 让我们考虑一个示例代码: 当我使用方法设置新值时,如果oldValue和newValue相同,则不会激发事件。只有当他们不同的时候。 一个例子: 我有一个与包含一些“元素”的绑定。 我可以在应用程序的不同位置添加更多元素。 有一个启动过程的按钮“start”-它通过列表迭代并对每个元素执行一些操作。 是不同的类。它处理一些元素,还包含-来指示当前选择的元素的索引。 当执行当前元素时,我希望显示这一

  • 目前我在主干中有这个功能。 它会在触发onChange事件时更新模型。 我正在使用react的datepicker组件在这个模型中添加一个日期字段,但是主干的这个函数在我选择日期时不会触发onChange事件。这是一个组件:https://github.com/Hacker0x01/react-datepicker 在我的组件中,我手动触发了“更改”事件 这很好,但当我在datepicker中选择