我正在尝试设置多个 JSpinners 来编辑单个日期值 - 即一个微调器用于几天,一个用于几个月等。
似乎我应该能够在多个 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()
。
因此,看起来我还需要使用自定义 propertyChange()
方法实现自定义编辑器组件。我终于走上了正确的轨道,还是错过了一些明显的东西?
最佳答案
可能是在 How to Use Spinners 上的 Swing 教程中找到的 CyclingSpinnerListModel
会给你一些想法。
关于java - 具有共享 SpinnerModel 的 JSpinners,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7676245/