Java JSlider设置值

时间:2011-07-14 17:57:44

标签: java swing range jslider

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

2 个答案:

答案 0 :(得分:4)

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

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

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

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

或者,如果无法计算滑块位置对应的值,则可以存储数组中所需的值。

您可以使用setLabelTable(Dictionary labels)设置自定义标签。 This page包含有关如何创建自定义标签的信息。正如here指出的那样,你实际上会使用HashTable一个实现Dictionary接口的类。

干杯!

答案 1 :(得分:4)

使用BoundedRangeModel 您可以修改此模型,以便同步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);