正如Swing上下文中提到的here,GUI设计经常使用observer pattern。经常使用EventListenerList
中规定的方案,是否有一个Java FX示例,例如Converter
,它关注模式本身?
答案 0 :(得分:6)
如前所述here,JavaFX体系结构倾向于通过实现Observable
接口的类来支持绑定GUI元素。为此,Irina Fedortsova在JavaFX for Swing Developers的第5章中将原始的Converter
改编为JavaFX:Implementing a Swing Application in JavaFX。
我概括了下面的程序,更新到Java 8并删除了对现在deprecated builder API的依赖。在下面的变体中,
名为meters
的{{3}}用作应用程序的Observable
模型。
DoubleProperty
的实例,例如TextField
,ComboBox
和Slider
,每个都充当视图 >模型,以及为用户提供控制交互的方式。
在 ConversionPanel
内,InvalidationListener
添加ComboBox
更新了TextField
视图根据需要反映当前选定的Unit
的模型;添加到TextField
的类似侦听器会在用户输入时更新模型。
同一个模型在ConversionPanel
{/ 1}}的实例之间共享,链接滑块和任何听取的控件模型
Slider
每个slider.valueProperty().bindBidirectional(meters);
还有一个模型,Control
,用户可以在ComboBox
的实例中进行选择。
代码:
Unit