Светлый фон

Это IntegerSpinnerValueFactory для последовательности целых значений.

DoubleSpinnerValueFactory для последовательности значений типа double.

И ListSpinnerValueFactory для последовательности значений ObservableList, это обычно значения типа String.

У Spinner есть дочерний компонент TextField, который отвечает за отображение и потенциальное изменение текущего значения Spinner, и этот компонент называется редактором.

По умолчанию Spinner не редактируется, но это можно изменить, если для свойства editable установить значение true.

Редактор Spinner синхронизируется с фабрикой SpinnerValueFactory, слушая изменения свойства value фабрики значений.

Если пользователь изменил значение, отображаемое в редакторе, пользователь должен зафиксировать редактирование с помощью клавиши «Enter».

На слайде показано создание спиннеров для трех типов значений – int, double и String.

Для создания спиннера с последовательностью произвольных объектов, создается фабрика SpinnerValueFactory с переопределенными методами decrement и increment, а объект должен иметь переопределенный метод toString.

С помощью предустановленных классов спиннера и метода getStyleClass.add можно поменять расположение кнопок спиннера относительно поля значения.

 

 

Для создания редактируемого спиннера, сначала мы должны вызвать метод setEditable (true).

 

 

Так как поле спиннера принимает на вход строки, мы должны установить для фабрики значений преобразователь между строками и значениями последовательности спиннера.

Делаем мы это методом setConverter, в котором указываем преобразователь с определенными методами toString и fromString.

Далее мы присоединяем к полю спиннера, которое является редактором, слушатель нажатия клавиши Enter.

В котором извлекаем строку, введенную пользователем, и преобразуем ее в значение последовательности спиннера.

Далее, если значение не входит в последовательность, мы добавляем это значение.