【问题标题】:Detect when max limit is reached on JSpinner?检测何时达到 JSpinner 的最大限制?
【发布时间】:2018-03-30 18:12:04
【问题描述】:

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

【问题讨论】:

  • 你应该从按钮的事件监听器中检查JSpinner的当前状态。
  • 你会认为微调器未能超过 180 度可能是一个暗示..
  • 请附上表格的截图。目前尚不清楚您向用户显示的内容。

标签: java swing user-interface jspinner


【解决方案1】:

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

创建具有自定义“setValue(..)”方法的 javax.swing.SpinnerNumberModel 的子类,该方法会在 UI 尝试设置过大的值时通知您的代码。然后将其安装在您的 JSpinner 对象中

mySpinner.setModel(new MySpinnerModel())

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 2012-07-13
      相关资源
      最近更新 更多