JSpinners с общим SpinnerModel - PullRequest
       12

JSpinners с общим SpinnerModel

3 голосов
/ 06 октября 2011

Я пытаюсь настроить несколько JSpinner для редактирования одного значения Date - т.е. один счетчик для дней, один для месяцев и т. Д.

Кажется, я должен иметь возможность поделиться одним SpinnerModel между несколькими JSpinners, но я сталкиваюсь с трудностями при таком подходе.

То, что я пробовал, было в основном следующим образом:

SpinnerDateModel model = new SpinnerDateModel();
JSpinner dayPeer = new JSpinner(model);
dayPeer.setEditor(new JSpinner.DateEditor(dayPeer, "dd"));
JSpinner monthPeer = new JSpinner(model);
monthPeer.setEditor(new JSpinner.DateEditor(monthPeer, "MM"));

При этом я обнаружил, что изменение одного значениясбросить другой.Проблема, похоже, возникла в JSpinner.DefaultEditor.propertyChange(), который анализирует текст редактора в дату, а затем вызывает setValue() с этим.

Итак, похоже, мне также нужно реализовать пользовательский компонент редактора с пользовательскимpropertyChange() метод.Я, наконец, на правильном пути, или я пропустил что-то очевидное?

Ответы [ 2 ]

4 голосов
/ 06 октября 2011

Может быть, CyclingSpinnerListModel, найденный в руководстве по Swing на Как использовать Spinners , даст вам несколько идей.

2 голосов
/ 06 октября 2011

Я бы порекомендовал JCalendar и связанные с этим темы . Он имеет отличную поддержку блесны даты.

JSpinnerDateEditor jsde = new JSpinnerDateEditor();
JDateChooser spinner = new JDateChooser(jsde);
this.add(spinner);

Приложение: В качестве альтернативы, вместо отдельных счетчиков, рассмотрите возможность использования действий increment и decrement, связанных со стандартом JSpinner.DateEditor.

...