即使在整个NSA监视的这段时间,实现JavaFX控件时也要牢记可观察性,这仍然是一个好主意。 与Swing相比,这在JavaFX中很容易实现。
旧时光
来自Swing,我习惯于花费大量精力和时间来使自定义控件变得可观察。 通常需要添加方法来添加和删除某种类型的侦听器。 此侦听器类型是一个新接口,该接口的单个方法接受了一个新的事件对象。 要发送此事件对象,控件必须在我的自定义控件中“触发”它,因此我最终编写了fireXYZ()方法。 要做很多工作只是为了让别人知道控件状态的某些方面已经改变。
新时代
在JavaFX中,通过使用属性和可观察的集合可以更轻松地实现可观察性。 在FlexGanttFX框架中,其控件的几乎每个属性都是属性,并且所有集合都是通过FXCollections类创建的,该类返回可观察的集合。 这很有意义,因为每个控件的属性总数定义了它的状态,并且该状态必须是可观察的,以便应用程序的其他部分(尤其是其他控件)可以对状态更改做出反应。
样板代码
使用属性的不利之处在于,您最终编写了许多