2011-10-06 227 views
3

我试图设置多个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()方法。我终于走上了正轨,还是错过了明显的东西?

回答

2

我建议JCalendar及以下相关主题。它具有出色的日期微调支持。

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

附录:作为替代方案,而不是单独的纺纱,可以考虑使用结合到标准的JSpinner.DateEditorincrementdecrement动作。

+2

欣赏的指针,但我的雇主宁愿避免使用外部库,甚至GLPL的。 – vaughandroid