【发布时间】:2011-07-14 17:57:43
【问题描述】:
如何设置JSlider 的值?我想为它分配特定的值,间隔不是恒定的。
请帮忙
【问题讨论】:
如何设置JSlider 的值?我想为它分配特定的值,间隔不是恒定的。
请帮忙
【问题讨论】:
您可以使用构造函数设置滑块的最小值和最大值:
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 接口的类。
干杯!
【讨论】:
使用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
SpinnerModel spinnerModel =
new SpinnerNumberModel(value, minimum, maximum, stepSize);
JSpinner spinner = new JSpinner(spinnerModel);
// changing the stepSize at anytime
sm.setStepSize(newValue);
【讨论】:
setSapToTicks 只是发生在鼠标单击 RELEASE 时 - 滑块的实际移动是不可步进的。如果有人可以忍受,它现在可以工作了^^谢谢