JavaFX 2滑块,用于圆形旋钮和按键值

时间:2012-07-02 06:38:21

标签: slider javafx-2

基于此示例中的音量旋钮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;
    }

2 个答案:

答案 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切片。