基于此示例中的音量旋钮http://fxexperience.com/2012/01/fun-javafx-2-0-audio-player/
如何制作一个音量旋钮,以每15或30度的角度捕捉到特定的角度值?谢谢你的任何提示。 我所做的是重新定义子类中的rotateKnob,并以这种方式设置角度,使滑块捕捉值180,120,60,0,-180,-160,-120,-60:
Slider s = getSkinnable();
double zeroOneValue = (s.getValue() - s.getMin()) / (s.getMax() - s.getMin());
double angle = minAngle + ((maxAngle - minAngle) * zeroOneValue);
int angleMod = (int) (angle % 60);
double val;
if (angleMod == 0) {
val = (int) angle;
} else if (angleMod > (60 / 2)) {
val = (int) angle - angleMod;
} else {
val = (int) angle - angleMod + 60;
}
答案 0 :(得分:0)
你不需要做任何特别的事情。只需使用“snapToTicks”属性即可。在主类中,定义音量旋钮后,输入以下代码:
volumeKnob.setMinorTickCount(0);
volumeKnob.setMajorTickUnit(1.0/14.0);
volumeKnob.snapToTicksProperty().set(true);
此处的数字基于音量旋钮周围有14个“点”的事实。此代码将确保您只能将音量设置为其中一个点。
答案 1 :(得分:0)
@Enwired有一个很好的答案。您需要其他图形资源来更改点数。但这不是使旋转控件周围每个刻度之间的角度变化的一部分。
就像他将圆分成1/14一样,您可以选择将圆分为60度的60.0 / 360.0或1.0 / 6.0切片。