实现 ObservableValue

2024-01-09

我有这个对象:

public class Oggetto{
    private int value;
    private boolean valid;

    public Oggetto(int value, boolean valid) {
        this.value = value;
        this.valid = valid;
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    public boolean isValid() {
        return valid;
    }

    public void setValid(boolean valid) {
        this.valid = valid;
    }    
}

我想实现一个 Observable 对象,当内部发生变化时触发事件 这是可观察的对象:

public class OggettoOsservabile implements ObservableValue<Oggetto>{

    private Oggetto value;

    OggettoOsservabile(int i, boolean b) {
        this.value=new Oggetto(i, b);
    }
    @Override
    public void addListener(ChangeListener<? super Oggetto> listener) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    @Override
    public void removeListener(ChangeListener<? super Oggetto> listener) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    @Override
    public Oggetto getValue() {
        return value;
    }
    @Override
    public void addListener(InvalidationListener listener) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    @Override
    public void removeListener(InvalidationListener listener) {
        throw new UnsupportedOperationException("Not supported yet."); 
    }  
}

我不知道如何继续检测“Oggetto”类中的更改并向寄存器侦听器发送通知。

OggettoOsservabile oggetto = new OggettoOsservabile(1, false);              
oggetto.addListener(new ChangeListener<Oggetto>() {
     public void changed(ObservableValue<? extends Oggetto> observable, Oggetto oldValue, Oggetto newValue) {
           System.out.println("changed " + oldValue + "->" + newValue);   
     }
});

实施您的Oggetto使用标准 JavaFX 属性的类:

import javafx.beans.property.BooleanProperty ;
import javafx.beans.property.IntegerProperty ;
import javafx.beans.property.SimpleBooleanProperty ;
import javafx.beans.property.SimpleIntegerProperty ;

public class Oggetto {

    private final IntegerProperty value = new SimpleIntegerProperty() ;

    public final IntegerProperty valueProperty() {
        return value ;
    }

    public final int getValue() {
        return value.get();
    }

    public final void setValue(int value) {
        this.value.set(value);
    }

    private final BooleanProperty valid = new SimpleBooleanProperty();

    public final BooleanProperty validProperty() {
        return valid ;
    }

    public final boolean isValid() {
        return valid.get();
    }

    public final void setValid(boolean valid) {
        this.valid.set(valid);
    }

    public Oggetto(int value, boolean valid) {
        setValue(value);
        setValid(valid);
    }
}

这可能就是您所需要的,因为您只需观察各个属性即可。但是,如果您想要一个在任一属性发生更改时通知失效侦听器的类,您可以扩展ObjectBinding:

import javafx.beans.binding.ObjectBinding ;

public class OggettoObservable extends ObjectBinding {

    private final Oggetto value ;

    public OggettoObservable(int value, boolean valid) {
        this.value = new Oggetto(value, valid);
        bind(this.value.valueProperty(), this.value.validProperty());
    }

    @Override
    public Oggetto computeValue() {
        return value ;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现 ObservableValue 的相关文章

随机推荐

  • 如果值为空则更改绑定

    如果值为 null 或空 我想更改绑定 我举这个例子来解释 List
  • 删除SAS中所有观测值都不包含特定值的组

    我想删除其观察值中没有 NUM 14 的整个组 所以就像这样 原始数据 ID NUM 1 14 1 12 1 10 2 13 2 11 2 10 3 14 3 10 由于 ID 2 中都不包含 NUM 14 因此我删除了组 2 它应该看起来
  • 使用“/”和 Slugs 的 Rails RESTful 路由

    我希望做一些类似 wordpress slug 的事情 其中 我有一个像这样的 URL 同时维护 RESTful 路由 http foo com blog 2009 12 04 article title 我对保持 RESTFUL 路由感兴
  • 如何测试基于 Stripe 的 Apple Pay? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 目前我正在尝试开发一个本机iOS应用程序 我必须集成基于Stripe的Apple Pay 为此我已在我的项目中添加了他们提供的SDK 在最
  • 在Android上,正在运行的进程和缓存的后台进程有什么区别?

    在Android上 当我查看 设置 gt 应用程序 时 在 运行 选项卡下 我可以看到内存被分成几部分 已用内存 和 空闲内存 应用程序也被放置进入 已用内存 或 空闲内存 无内存 部分中的应用程序被标记为 缓存后台进程 那么 什么是 缓存
  • ReentrantLock.Sync 中当前线程变量的搭载如何工作?

    我在 Java并发实践 第14 6 1节中读到了ReentrantLock的一些实现细节 注释中的一些内容让我感到困惑 因为受保护的状态操作方法具有易失性读取或写入的内存语义 并且 ReentrantLock 非常小心仅在调用 getSta
  • 谷歌表格=间接()在单元格范围上

    我想知道是否有一个标准函数可以循环一系列单元格并对其应用间接函数 我正在尝试构建一个表格来按商店 月份和类别来支付我的费用 但到目前为止它还很难扩展 因为我有一个看起来像的函数 INDIRECT B 3 concat A12 C 1 IND
  • 什么可能导致 PHP 序列化函数失败?

    我有一些服务器端 PHP 代码 尝试将数据对象 本质上是多维数组 保存到后端数据库 该数据对象最初作为从 Flex 应用程序发送的 AMF 动作脚本对象出现 我想保留整个对象以供以后使用 因此我使用了 php 序列化函数并将对象编码为一个可
  • 如何使该 Youtube 视频可点击(css + z-index)?

    我希望 Youtube 视频成为背景壁纸 但我仍然希望它具有交互性 即用户可以通过单击来暂停视频 现在 我已将 iframe 设置为 z index 为 99 由于某种原因 我无法点击它 用Firebug检查后 似乎是这样body覆盖 if
  • 对于内置类型可以使用 C 风格的强制转换吗?

    在这里阅读了很多关于 C 中 C 风格转换的答案后 我仍然有一个小问题 我可以对内置类型使用 C 风格的转换吗 long x long y 或者它仍然被认为是不好和危险的 我可以对 long x long y 等内置类型使用 C 风格转换吗
  • 如何使用带有校验位的 ZPL 创建 GS1-128 条形码

    我需要使用 ZPL 生成 GS1 128 条形码 它需要包含一个校验位 我似乎没有得到校验位 Here is my code BCN 088 Y Y Y D FD 00 00123456000057763 FS The first Y is
  • 在android中的edittext中插入textview?

    我正在尝试在 Edittext 中插入文本视图 如下所示 任何人都可以给我关于如何实现它或其他东西的想法 谢谢 update 编辑文本中的文本视图会动态变化 尝试这个示例代码 它符合你的要求 PopupWindow pw new Popup
  • 从 testNG.xml 文件中检索参数值

    我想打印该值 iphone 5 从钥匙参数名称 webdriver deviceName iPhone 基本上有两种方法可以在测试类中执行此操作 测试类本质上是包含一个或多个 Test 配置方法 Via the ITestContext目的
  • HTTP 基本:访问被拒绝致命:身份验证失败

    我在 Windows 10 Pro x64 上使用 GitLab 社区版 9 1 3 2e4e522 带有 Git 客户端 Error Cloning into project name remote HTTP Basic Access d
  • Firebase 存储允许删除文件

    我对用户发布图像上传有以下规则 但是当前规则不允许删除文件 如何修改规则以允许用户删除他的图片 什么属性request变量表示请求是DELETE match uid posts pid imageName allow read allow
  • Windows/WPF/Silverlight 应用程序中的实体框架 ObjectContext

    我们正在使用实体框架 准确地说是带有 RIA 服务的 Silverlight 编写一个 WPF 应用程序 我们通过应用程序使用共享的 ObjectContext 以便我们可以从跨模块共享数据中受益 问题是 如果用户在工作期间打开历史销售 它
  • 如何使用 C# 将 Html 的图像转换为数据 URI?

    我需要在 HTML 的 Win 应用程序中将图像转换为数据 URL 嵌入图像 并且我需要 图像的数据 URL 嵌入图像 public static string GetDataURL string imgFile return img sr
  • 教义。为什么我在 ManyToMany 上得到 persistCollection 和一个空数组?

    这是我的实体 Productgeneral ORM Table name ProductGeneral indexes ORM Index name category id columns category id ORM Entity cl
  • XCode 工作区完整性 - 无法加载项目 (pods.xcodepoj)

    我从 git 中拉取 一切正常 除了我收到此错误 即使我仍然可以运行该项目 有没有办法来解决这个问题 这通常意味着存在提交到实际的 project pbxproj 文件的合并冲突 由于这是一个 Pods 项目 它是短暂的并且可以随意重新创建
  • 实现 ObservableValue

    我有这个对象 public class Oggetto private int value private boolean valid public Oggetto int value boolean valid this value va