3

如何设置 a 的值JSlider?我想为它分配特定的值,其间隔不是恒定的。请帮忙

4

2 回答 2

4

您可以使用构造函数设置滑块的最小值和最大值:

JSlider mySlider = new Slider(10, 30); // min value of slider, maxValue of slider

据我所知,滑块的范围是统一的,无法更改。(不过我不确定。)您可以做的是使用统一值并将其映射到您想要的间隔。例如,假设您希望滑块从 10 变为 10000,但采用对数刻度。

将最小值设置为 1,(10 的以 10 为底的对数 = 1),将最大值设置为 4(10,000 的以 10 为底的对数)= 4。使用该getValue()方法获取滑块的当前值,然后使用 将 10 提高到该次方Math.pow()

或者,如果无法计算,您可以将与滑块位置对应的值与您想要的值一起存储在数组中。

您可以使用setLabelTable(Dictionary labels)设置自定义标签。此页面包含有关如何创建自定义标签的信息。正如这里所指出的,您实际上会使用一个HashTable实现Dictionary接口的类。

干杯!

于 2011-07-14T18:25:37.133 回答
4

使用 aBoundedRangeModel 您可以修改此模型,因此您也可以同步 SJlider。

    BoundedRangeModel bRangeModel = 
      new DefaultBoundedRangeModel(initValue, extent, min, max);
    JSlider s = new JSlider(bRangeModel);

但是步长不受模型的约束。您可以使用较小的刻度间距设置步骤(我认为这是您想要的)

    slider.setMinorTickSpacing(5); // step / interavl
    slider.setSnapToTicks(true); // should be activated for custom tick space


或者,您可以使用 JSpinner:

    SpinnerModel spinnerModel = 
      new SpinnerNumberModel(value, minimum, maximum, stepSize);
    JSpinner spinner = new JSpinner(spinnerModel);

    // changing the stepSize at anytime
    sm.setStepSize(newValue);
于 2011-07-14T18:51:51.937 回答