我刚刚意识到JSlider不能处理浮点数。有没有人能推荐一个可以的Swing/AWT替代方案?
编辑:或某种描述的变通方法。
发布于 2012-04-18 02:47:07
滑块一般处理数字的范围。从实际实现来看,每个滑块必须有两个元素:
是“有限数”给你带来了麻烦。如果没有有限数量的增量,滑块将无法在屏幕上显示。对于有限数量的增量,不可能选择介于两个增量“步长”之间的float数。
简而言之,这是不可能的;因此,以下是解决方法:
0.0f to 10.0f或者其他什么,这都没关系,但是你必须在你希望支持的最小增量上有一个but。这个increment.0.1f,也可以是0.001f,或者其他什么,这都无关紧要,但是你必须有一个函数和一对函数。一个是获取滑块整数值并将其“映射”到浮点值,另一个是获取浮点值并将其“映射”到一个滑块值。例如,对于以0.1f为增量的5.0f to 10.0f:
((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);
}https://stackoverflow.com/questions/10196928
复制相似问题