我刚刚意识到 JSlider 无法处理浮点数。任何人都可以推荐一个 Swing/AWT 替代品吗?
编辑:或者一些描述的解决方法。
我刚刚意识到 JSlider 无法处理浮点数。任何人都可以推荐一个 Swing/AWT 替代品吗?
编辑:或者一些描述的解决方法。
滑块通常处理数字范围。从实际实现来看,每个滑块必须有两个元素:
给你带来麻烦的是“有限的数字”。如果没有有限数量的增量,滑块就无法适应屏幕。对于有限数量的增量,不可能选择float
位于两个增量“步骤”之间的数字。
简而言之,这是不可能的;所以,这是解决方法:
0.0f
to10.0f
或其他,没关系,但你必须有一个范围。0.1f
或0.001f
其他,没关系,但你必须有一个增量。一个例子,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);
}