Spinner< Integer>绑定到IntegerProperty [英] Spinner<Integer> bind to IntegerProperty

查看:70
本文介绍了Spinner< Integer>绑定到IntegerProperty的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用FX8 Spinner控件,但是我想将源绑定到IntegerProperty

I want to use a FX8 Spinner control, but I want to bind the source to an IntegerProperty

int MIN = 0;
int MAX = 5000;
int STEP = 500;
IntegerProperty integerProperty = new SimpleIntegerProperty();

Spinner<Integer> spinner = new Spinner<>(MIN, MAX, STEP);

我知道绑定是通过绑定到Value Factory中的valueProperty来设置的.但是,这期望Property<Integer>,并且我找不到在IntegerPropertyProperty<Integer>之间进行转换的方法.

I understand the binding is set via binding to the valueProperty in the Value Factory. However this expects Property<Integer> and I cannot find a way to cast between IntegerProperty and Property<Integer>.

显然,以下内容会生成编译器错误:

Obviously the below generates a compiler error:

spinner.getValueFactory().valueProperty().bindBidirectional(integerProperty);

我是否需要为两个方向手动分配变更侦听器?当然,有一种使用valueProperty的更整洁的解决方案,这不可能不是不可预见的情况.

Do I need to manually assign a change listener for both directions? Surely there is a neater solution using the valueProperty, this cannot have been an unforeseen situation.

推荐答案

您可以包装ObjectProperty:

You can wrap an ObjectProperty:

ObjectProperty<Integer> objectProp = new SimpleObjectProperty<>(MIN);
IntegerProperty integerProperty = IntegerProperty.integerProperty(objectProp);

Spinner<Integer> spinner = new Spinner<>(MIN, MAX, STEP);

spinner.getValueFactory().valueProperty().bindBidirectional(objectProp);

IntegerProperty.integerProperty creates a property that's bidirectionally connected to the property it wraps.

这篇关于Spinner&lt; Integer&gt;绑定到IntegerProperty的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆