【问题标题】:Java JSlider set valuesJava JSlider 设置值
【发布时间】:2011-07-14 17:57:43
【问题描述】:

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

【问题讨论】:

标签: java swing range jslider


【解决方案1】:

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

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() 方法获取滑块的当前值并提高使用Math.pow() 获得 10 次幂。

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

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

干杯!

【讨论】:

    【解决方案2】:

    使用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);
    

    【讨论】:

    • 您使用的是哪个版本的 java/swing?我的答案是2011年!这适用于 Java 6
    • 好吧,看来问题在我这边:setSapToTicks 只是发生在鼠标单击 RELEASE 时 - 滑块的实际移动是不可步进的。如果有人可以忍受,它现在可以工作了^^谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-11-01
    • 2022-09-24
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多