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

问题描述 投票:0回答:3

我目前在我的表单中实现了

JSpinner
,其中保存了完成任务所需的时间;该旋转器的当前限制为 180 分钟。我的问题是如何检测微调器当前处于最大值,以便当用户尝试按下按钮来增加分钟数时,我可以输出一条消息,通知他们执行任务的最大时间是180分钟吗?

java swing user-interface jspinner
3个回答
1
投票

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

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

将其安装到您的 JSpinner 对象中
mySpinner.setModel(new MySpinnerModel())

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


0
投票

您可以向 JSpinner 组件添加更改侦听器。在其

stateChanged
方法中,您可以调用
getNextValue()
方法。如果返回
null
,那么您已达到模型的最大值。

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


0
投票

我可以给出一个解决方法,你只需将限制设置为181,然后检查changelistener中的值,如果它等于181,则将值设置为180,然后执行你的方法。

© www.soinside.com 2019 - 2024. All rights reserved.