我刚刚意识到 JSlider 不能处理 float 。任何人都可以推荐一个可以替代的 Swing/AWT 吗?
编辑:或一些描述的解决方法。
最佳答案
slider 通常处理数字范围。从实际实现来看,每个 slider 必须有两个元素:
- 起始位置。
- 有限数量的“下一个”增量。
给您带来麻烦的是“有限数”。没有有限数量的增量, slider 无法适应屏幕。对于有限数量的增量,不可能选择位于两个增量“步骤”之间的 float
数字。
简而言之,这是不可能的;所以,这是解决方法:
- 决定输入的“ float ”的范围。这可以是
0.0f
到10.0f
或其他任何值,这无关紧要,但您必须有一个范围。 - 确定您希望支持的最小增量。这可能是
0.1f
或0.001f
或其他,这无关紧要,但您必须有一个增量。 - 创建一对函数。一种采用 Slider 整数值并将它们“映射”到浮点值,另一种采用浮点值并将它们“映射”到 Slider 值。
一个例子,从 5.0f
到 10.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/