JSpinners共享的SpinnerModel
问题描述:
我试图设置多个JSpinners编辑一个日期值 - 即天一个旋转,一个几个月,等JSpinners共享的SpinnerModel
好像我应该能够分享单个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()
方法。我终于走上了正轨,还是错过了明显的东西?
答
我建议JCalendar
及以下相关主题jcalendar。它具有出色的日期微调支持。
JSpinnerDateEditor jsde = new JSpinnerDateEditor();
JDateChooser spinner = new JDateChooser(jsde);
this.add(spinner);
附录:作为替代方案,而不是单独的纺纱,可以考虑使用结合到标准的JSpinner.DateEditor
和increment
decrement
动作。
+2
欣赏的指针,但我的雇主宁愿避免使用外部库,甚至GLPL的。 – vaughandroid
+1,如果可以的话,礼貌地指出明显的。 – vaughandroid
+1个很好的例子。 – trashgod
+1,现在我可以这样做了。 :) – vaughandroid