java - JSlider替代品

标签 java swing floating-point awt jslider

我刚刚意识到 JSlider 不能处理 float 。任何人都可以推荐一个可以替代的 Swing/AWT 吗?

编辑:或一些描述的解决方法。

最佳答案

slider 通常处理数字范围。从实际实现来看,每个 slider 必须有两个元素:

  1. 起始位置。
  2. 有限数量的“下一个”增量。

给您带来麻烦的是“有限数”。没有有限数量的增量, slider 无法适应屏幕。对于有限数量的增量,不可能选择位于两个增量“步骤”之间的 float 数字。

简而言之,这是不可能的;所以,这是解决方法:

  1. 决定输入的“ float ”的范围。这可以是 0.0f10.0f 或其他任何值,这无关紧要,但您必须有一个范围。
  2. 确定您希望支持的最小增量。这可能是 0.1f0.001f 或其他,这无关紧要,但您必须有一个增量。
  3. 创建一对函数。一种采用 Slider 整数值并将它们“映射”到浮点值,另一种采用浮点值并将它们“映射”到 Slider 值。

一个例子,从 5.0f10.0f,增量为 0.1f:

((10.0f - 5.0f) / 0.1f) + 1 = 51 increments (0 to 50)

updateSlider(float value) {
  if (value > 10.0f) {
    Slider.setValue(50);
  } else if (value < 5.0f) {
    Slider.setValue(0);
  } else {
    Slider.setValue((int)Math.round((value - 5.0f)/0.1f));
  }
}

float updateFloat(Slider slider) {
  int value = slider.getValue();
  return 5.0f + (slider.getValue() * 0.1f);
}

关于java - JSlider替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10196928/

相关文章:

java - Activity 目录服务设置

JavaFX 2 : Get TableCell Row Index

java - JLabel 图标未显示

java - Swing 图形用户界面 : JList with jtextFields on the rows

c++ - 为什么 float 下溢会发生在 2⁻¹²⁶ 处?

java - 如何使用 Java 正则表达式验证几何点?

java - 寻找在用户界面中重新排序图像的建议

java - 添加 JMenuItems 的有效方法

r - 为什么这些数字不相等?

c - 浮点异常(核心转储)