3

我正在尝试设置多个 JSpinners 来编辑单个 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()方法实现自定义编辑器组件。我终于走上了正确的轨道,还是我错过了一些明显的东西?

4

2 回答 2

4

也许在如何使用 SpinnersCyclingSpinnerListModel的 Swing 教程中找到的内容会给你一些想法。

于 2011-10-06T15:08:19.923 回答
2

我会推荐JCalendar这些相关主题。它具有出色的日期微调器支持。

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

附录:作为替代方案,考虑使用绑定到标准的incrementand操作,而不是单独的微调器。decrementJSpinner.DateEditor

于 2011-10-06T15:07:39.693 回答