1

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

2 回答 2

1

你不需要做任何特别的事情。只需使用“snapToTicks”属性。在主类中,定义好音量旋钮后,放入如下代码:

    volumeKnob.setMinorTickCount(0);
    volumeKnob.setMajorTickUnit(1.0/14.0);
    volumeKnob.snapToTicksProperty().set(true);

这里的数字基于音量旋钮周围有 14 个“点”这一事实。此代码将确保您只能将音量设置为其中一个点。

于 2012-07-02T17:33:13.447 回答
0

@Enwired 有一个很好的答案。您需要不同的图形资源来更改点数。但这不是旋转控件周围每个刻度之间的角度的一部分。

就像他把圆分成 1/14 一样,你可以选择用 60.0/360.0 或 1.0/6.0 将它分成 60 度的切片。

于 2020-05-25T20:03:22.287 回答