检测何时达到 JSpinner 的最大限制?

Detect when max limit is reached on JSpinner?

我目前在我的表单中实现了一个 JSpinner,它包含完成一项任务所花费的时间;此微调器的当前限制为 180 分钟。我的问题是我如何检测微调器当前处于最大值,以便当用户尝试按下按钮以增加分钟数时,我可以输出一条消息,通知他们执行任务的最长时间是 180 分钟?

一旦 JSpinner 达到限制值,您就不会再从中获得任何更改事件。

创建 javax.swing.SpinnerNumberModel 的子类,该子类具有自定义 "setValue(..)" 方法,当 UI 尝试设置过大的值时,该方法会通知您的代码。然后使用

将它安装在你的 JSpinner 对象中
mySpinner.setModel(new MySpinnerModel())

但更大的问题是您是否应该这样做。一个 JSpinner 有一个 well-understood UI;人们(注定)习惯了它的表现。出现一个您必须关闭的对话框或其他一些意外行为可能会让他们不高兴。

您可以向 JSpinner 组件添加更改侦听器。在它的 stateChanged 方法中你可以调用 getNextValue() 方法。如果这个 returns null 那么你已经达到了模型的最大值。

查看更多:https://docs.oracle.com/javase/8/docs/api/javax/swing/JSpinner.html#getNextValue--