Здесь показано создание модели SpinnerListModel.
Сначала вы создаете массив или список строк, а затем на его основе создаете модель данных.
Далее вы создаете компонент JSpinner на основе модели данных.
К компоненту присоединяется слушатель изменения значения поля, в обработчике которого вы можете получить новое значение форматированного поля ввода и работать с ним.
Компонент JSpinner напрямую поддерживает один тип прослушивателя событий – это ChangeListener.
Этот слушатель уведомляется, когда вызывается метод commitEdit, сообщая, что значение счетчика изменилось.
По умолчанию, этот метод вызывается при нажатии стрелок для перемещения по различным значениям.
Предположим, вы хотите позволить пользователю ввести свое значение и хотите получить это значение для дальнейшей обработки.
Для этого вам нужно обратиться к вспомогательному классу компонента JSpinner.
Для каждой из моделей данных компонента JSpinner, доступен вспомогательный класс ListEditor, DateEditor, NumberEditor, которые расширяют базовый класс DefaultEditor.
В то время как модель данных позволяет контролировать то, что выбирается для компонента, редакторы позволяют контролировать то, как отображать и редактировать каждое выбираемое значение.
Поэтому вы извлекаете из спиннера редактор, а из редактора извлекаете объект поля ввода.
Затем присоединяете к полю ввода слушатель изменения его свойства, в обработчике которого вы можете получить введенное пользователем значение после нажатия им клавиши Enter или потери полем ввода фокуса.
Также вы можете использовать редактор спинера и соответственно поле ввода для контроля над отображением значений спиннера.
Здесь мы выравниваем значение по центру поля ввода.
Если вы хотите отображать в спиннере даты, вам нужно использовать модель данных SpinnerDateModel.
Здесь в конструкторе модели мы указываем текущее значение, начальное и конечное значения последовательности дат, ограничивая диапазон 100 годами.
Последним аргументом конструктора вы указываете шаг изменения даты.
Соответственно, в слушателе изменения свойства поля ввода, вы должны проверять, является ли вводимое значение объектом класса Date.
Если вы хотите изменить формат отображения даты, вам нужно создать экземпляр редактора, указав в конструкторе шаблон форматирования.
Затем вы должны установить этот редактор для спиннера методом setEditor.
Модель данных SpinnerNumberModel обеспечивает выбор номера из открытого или закрытого диапазона значений.
Это число может быть любым из подклассов класса Number, включая объекты Integer и Double.
Здесь в конструкторе модели мы также указываем текущее значение, начальное и конечное значения последовательности чисел, указывая шаг изменения значения.
В слушателе изменения свойства поля ввода, вы должны проверять, является ли вводимое значение объектом класса Number.
Если вы хотите изменить формат отображения чисел, вам нужно создать экземпляр редактора, указав в конструкторе шаблон форматирования.
Затем вы должны установить этот редактор для спиннера методом setEditor.
Компонент JSlider представляет собой ползунок, с помощью которого пользователь может выбрать целое значение в указанном диапазоне.
Компонент JSlider создается с помощью конструктора, в котором можно указать его ориентацию, минимальное и максимальное значения диапазона и первоначальное значение ползунка.
Рядом с линейкой ползунка можно разметить шкалу со штрихами, отстоящими друг от друга на расстояние, устанавливаемое методом setMajorTickSpacing.
После определения расстояния шкала отображается методом setPaintTicks (true).
К штрихам можно добавить отображение числовых значений методом setPaintLabels (true).
Между штрихами можно отобразить более мелкие штрихи методом setMinorTickSpacing.
Если применить метод setSnapToTicks (true), то ползунок будет останавливаться только против штрихов.
Основную линейку ползунка можно убрать методом setPaintTrack (false), оставив только шкалу со штрихами.
По умолчанию числовые значения в шкале ставятся против каждого штриха.
Методом createStandardLabels можно изменить это правило, задав другой шаг расстановки чисел на шкале и другой начальный отсчет.
Затем эту таблицу нужно установить на шкале методом setLabelTable.
Можно создать свою таблицу меток штрихов, с помощью хэш-таблицы Hashtable, поместив в нее против каждого значения штриха свою метку.
После этого эта таблица устанавливается методом setLabelTable для ползунка.
В этом примере мы создаем ползунок и с помощью него динамически изменяем размеры кнопки.
JTree
Класс JTree представляет компонент Swing для отображения древовидных данных.
Дерево содержит один корневой объект root, далее размещаются его потомки узловые объекты node, имеющие своих потомков и одного предка parent.
На самом нижнем уровне расположены листья leaf – узлы, не имеющие потомков.
Как и все Swing компоненты, компонент JTree использует отдельный объект модели для хранения и представления данных, которые он отображает.
Большинство компонентов Swing автоматически создают этот объект модели, и вам не нужно явно с ним работать.