我正在尝试设置多个JSpinner来编辑单个Date值 - 即一个微调器,几天,一个月等等。
似乎我应该能够在几个JSpinner之间共享一个SpinnerModel
,但是我遇到了这种方法的困难。
我尝试的内容基本如下:
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()
调用。{/ p>
因此,看起来我还需要使用自定义propertyChange()
方法实现自定义编辑器组件。我最终走上了正确的轨道,还是我错过了一些明显的东西?
答案 0 :(得分:4)
也许在How to Use Spinners的Swing教程中找到的CyclingSpinnerListModel
会给你一些想法。
答案 1 :(得分:2)
我建议JCalendar
和这些相关主题jcalendar。它具有出色的日期微调器支持。
JSpinnerDateEditor jsde = new JSpinnerDateEditor();
JDateChooser spinner = new JDateChooser(jsde);
this.add(spinner);
附录:作为替代方案,请考虑使用绑定到标准JSpinner.DateEditor
的increment
和decrement
操作,而不是使用单独的微调器。