一、概述
Spinner是一个单行文本域, 允许用户从一个有序序列中选择一个数字或者对象。 Spinner通常提供一对小箭头按钮来逐步遍历序列中的元素。键盘的上/下箭头键也可以循环遍历这些元素。它也允许用户在Spinner中直接输入一个(有效的)值。尽管Combo Box提供了类似的功能,但是Spinner有些场景会更加适合。因为它不需要一个可隐藏重要数据的下拉列表。还有,它拥有循环和无穷数据模型等特性。其无穷数据模型是通过SpinnerValueFactory实现的,这和其他JavaFX UI控件使用的ObservableList数据模型不一样。
Spinner的序列数据是使用SpinnerValueFactory来定义的。可以通过Spinner类的构造函数传入此对象来进行设置。JavaFX中提供了一些常用类型的SpinnerValueFactory,如下:
- SpinnerValueFactory.IntegerSpinnerValueFactory
- SpinnerValueFactory.DoubleSpinnerValueFactory
- SpinnerValueFactory.ListSpinnerValueFactory
Spinner包含一个TextField子组件,用于展示或者修改当前值,被称作编辑器。默认情况下,Spinner是不可编辑的,但你可以通过设置其editable属性为true来开启它。编辑器会通过监听Value Factory的value属性变化来保持数据同步。如果用户在编辑器中修改了值,这很可能导致Spinner本身的值和编辑器的值不一致。此时用户必须通过敲击Enter键来提交编辑的内容,以确保二者的值保持一致。
该控件始于JavaFX 8u
40。
二、自有属性
- BooleanProperty editable
- ReadOnlyObjectProperty<TextField> editor
Spinner的编辑器