【问题标题】:Java - How can i get the index of a JSpinner selected item?Java - 如何获取 JSpinner 选定项目的索引?
【发布时间】:2015-12-04 02:13:04
【问题描述】:

我有一个具有随机值的 JSpinner 控件。这些值可以是重复的。例如:

{ 1, 2, 9, 3, 4, 5, 9, 6, 7, 3, 2, 9 }

如果用户选择了值 9,那么我如何将它与 JSpinner 中的其他 9 区分开来,因为我的程序会根据所选 9 的索引进行一些计算。

我的解决办法是在JSpinner中获取选中项的索引,就知道这是哪一项了。有可能吗?

【问题讨论】:

  • @cesarluis 这个答案行不通。在此示例中,如果值为 9,则返回的索引将始终为 2,即使选择了索引 7 或索引 11。
  • 要么使用 JList,要么您将获得 SpinerModel 并继续调用 getNextValue 并将结果与​​源列表进行比较,直到您弄清楚自己在哪里。
  • @markbernard .. 你是对的。 cesarluis 的建议解决方案将始终返回前 9 的索引。我想过使用 getNextValue & getPreviousValue,但它会这么复杂。我希望有一个更简单的方法。
  • @Brad 抱歉,我错了,我没有给予足够的关注。现在我正在考虑向上和向下计数点击/更改听众。也许这种方法很有用。 stackoverflow.com/questions/5184639/…。问题是重复非常接近,因此您可以制作接近值缓冲区或控制您的组合。
  • 我会使用 JComboBox,然后您只需使用 getSelectedIndex() 方法。 I thought about using getNextValue & getPreviousValue, - 如果用户不使用箭头键而是输入值怎么办?

标签: java swing duplicates jspinner


【解决方案1】:

jspiner.getValue() 会给你所选项目的值,你可以用它做任何事情,为什么你需要知道它的索引?形成 SpinnerModel 的 Java 文档

该模型不支持对序列元素的索引随机访问。一次只能访问三个序列值:当前、下一个和上一个。

【讨论】:

    【解决方案2】:

    经过反复试验,我找到了最适合我的案例的解决方案,我在这里分享它以防万一有人遇到相同的情况。我在微调器中的每个重复数字之前添加了空格,以知道这是哪个,并使微调器中的每个值都是唯一的,因此前 9 将是 {space + 9},第二个 9 将是 {2 个空格 + 9},第三个 9 将是 {3 个空格 + 9}。

    在微调器中添加空格对用户来说不会有任何问题,我认为我可能会使微调器编辑器不可编辑,因此如果用户尝试手动输入值,他不会搞砸。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2018-06-13
      • 2013-03-23
      相关资源
      最近更新 更多