Class RangeSlider

  • All Implemented Interfaces:
    Styleable, EventTarget, Skinnable

    public class RangeSlider
    extends Control
    The RangeSlider control is simply a JavaFX Slider control with support for two 'thumbs', rather than one. A thumb is the non-technical name for the draggable area inside the Slider / RangeSlider that allows for a value to be set.

    Because the RangeSlider has two thumbs, it also has a few additional rules and user interactions:

    1. The 'lower value' thumb can not move past the 'higher value' thumb.
    2. Whereas the Slider control only has one value property, the RangeSlider has a low value and a high value property, not surprisingly represented by the 'low value' and 'high value' thumbs.
    3. The area between the low and high values represents the allowable range. For example, if the low value is 2 and the high value is 8, then the allowable range is between 2 and 8.
    4. The allowable range area is rendered differently. This area is able to be dragged with mouse / touch input to allow for the entire range to be modified. For example, following on from the previous example of the allowable range being between 2 and 8, if the user drags the range bar to the right, the low value will adjust to 3, and the high value 9, and so on until the user stops adjusting.

    Screenshots

    Because the RangeSlider supports both horizontal and vertical orientation, there are two screenshots below:
    Horizontal: Screenshot of a horizontal RangeSlider
    Vertical: Screenshot of a vertical RangeSlider

    Code Samples

    Instantiating a RangeSlider is simple. The first decision is to decide whether a horizontal or a vertical track is more appropriate. By default RangeSlider instances are horizontal, but this can be changed by setting the orientation property.

    Once the orientation is determined, the next most important decision is to determine what the min / max and default low / high values are. The min / max values represent the smallest and largest legal values for the thumbs to be set to, whereas the low / high values represent where the thumbs are currently, within the bounds of the min / max values. Because all four values are required in all circumstances, they are all required parameters to instantiate a RangeSlider: the constructor takes four doubles, representing min, max, lowValue and highValue (in that order).

    For example, here is a simple horizontal RangeSlider that has a minimum value of 0, a maximum value of 100, a low value of 10 and a high value of 90:

    final RangeSlider hSlider = new RangeSlider(0, 100, 10, 90);

    To configure the hSlider to look like the RangeSlider in the horizontal RangeSlider screenshot above only requires a few additional properties to be set:

     
     final RangeSlider hSlider = new RangeSlider(0, 100, 10, 90);
     hSlider.setShowTickMarks(true);
     hSlider.setShowTickLabels(true);
     hSlider.setBlockIncrement(10);

    To create a vertical slider, simply do the following:

     
     final RangeSlider vSlider = new RangeSlider(0, 200, 30, 150);
     vSlider.setOrientation(Orientation.VERTICAL);

    This code creates a RangeSlider with a min value of 0, a max value of 200, a low value of 30, and a high value of 150.

    See Also:
    Slider
    • Property Detail

      • lowValue

        public final DoubleProperty lowValueProperty
        The low value property represents the current position of the low value thumb, and is within the allowable range as specified by the min and max properties. By default this value is 0.
        See Also:
        getLowValue(), setLowValue(double)
      • lowValueChanging

        public final BooleanProperty lowValueChangingProperty
        When true, indicates the current low value of this RangeSlider is changing. It provides notification that the low value is changing. Once the low value is computed, it is set back to false.
        See Also:
        isLowValueChanging(), setLowValueChanging(boolean)
      • highValue

        public final DoubleProperty highValueProperty
        The high value property represents the current position of the high value thumb, and is within the allowable range as specified by the min and max properties. By default this value is 100.
        See Also:
        getHighValue(), setHighValue(double)
      • highValueChanging

        public final BooleanProperty highValueChangingProperty
        When true, indicates the current high value of this RangeSlider is changing. It provides notification that the high value is changing. Once the high value is computed, it is set back to false.
        See Also:
        isHighValueChanging(), setHighValueChanging(boolean)
      • max

        public final DoubleProperty maxProperty
        Returns:
        A DoubleProperty representing the maximum value of this Slider. This must be a value greater than min.
      • snapToTicks

        public final BooleanProperty snapToTicksProperty
        Indicates whether the lowValueProperty() value} / highValueProperty() value} of the Slider should always be aligned with the tick marks. This is honored even if the tick marks are not shown.
        Returns:
        A BooleanProperty.
      • majorTickUnit

        public final DoubleProperty majorTickUnitProperty
        The unit distance between major tick marks. For example, if the min is 0 and the max is 100 and the majorTickUnit is 25, then there would be 5 tick marks: one at position 0, one at position 25, one at position 50, one at position 75, and a final one at position 100.

        This value should be positive and should be a value less than the span. Out of range values are essentially the same as disabling tick marks.

        Returns:
        A DoubleProperty
      • minorTickCount

        public final IntegerProperty minorTickCountProperty
        The number of minor ticks to place between any two major ticks. This number should be positive or zero. Out of range values will disable disable minor ticks, as will a value of zero.
        Returns:
        An InterProperty
      • blockIncrement

        public final DoubleProperty blockIncrementProperty
        The amount by which to adjust the slider if the track of the slider is clicked. This is used when manipulating the slider position using keys. If snapToTicks is true then the nearest tick mark to the adjusted value will be used.
        Returns:
        A DoubleProperty
      • orientation

        public final ObjectProperty<Orientation> orientationProperty
        The orientation of the Slider can either be horizontal or vertical.
        Returns:
        An Objectproperty representing the orientation of the Slider.
      • showTickMarks

        public final BooleanProperty showTickMarksProperty
        Returns:
        A BooleanProperty that specifies whether the Skin implementation should show tick marks.
    • Constructor Detail

      • RangeSlider

        public RangeSlider()
        Creates a new RangeSlider instance using default values of 0.0, 0.25, 0.75 and 1.0 for min/lowValue/highValue/max, respectively.
      • RangeSlider

        public RangeSlider​(double min,
                           double max,
                           double lowValue,
                           double highValue)
        Instantiates a default, horizontal RangeSlider with the specified min/max/low/high values.
        Parameters:
        min - The minimum allowable value that the RangeSlider will allow.
        max - The maximum allowable value that the RangeSlider will allow.
        lowValue - The initial value for the low value in the RangeSlider.
        highValue - The initial value for the high value in the RangeSlider.
    • Method Detail

      • lowValueProperty

        public final DoubleProperty lowValueProperty()
        The low value property represents the current position of the low value thumb, and is within the allowable range as specified by the min and max properties. By default this value is 0.
        See Also:
        getLowValue(), setLowValue(double)
      • setLowValue

        public final void setLowValue​(double d)
        Sets the low value for the range slider, which may or may not be clamped to be within the allowable range as specified by the min and max properties.
      • getLowValue

        public final double getLowValue()
        Returns the current low value for the range slider.
      • lowValueChangingProperty

        public final BooleanProperty lowValueChangingProperty()
        When true, indicates the current low value of this RangeSlider is changing. It provides notification that the low value is changing. Once the low value is computed, it is set back to false.
        See Also:
        isLowValueChanging(), setLowValueChanging(boolean)
      • setLowValueChanging

        public final void setLowValueChanging​(boolean value)
        Call this when the low value is changing.
        Parameters:
        value - True if the low value is changing, false otherwise.
      • isLowValueChanging

        public final boolean isLowValueChanging()
        Returns whether or not the low value of this RangeSlider is currently changing.
      • highValueProperty

        public final DoubleProperty highValueProperty()
        The high value property represents the current position of the high value thumb, and is within the allowable range as specified by the min and max properties. By default this value is 100.
        See Also:
        getHighValue(), setHighValue(double)
      • setHighValue

        public final void setHighValue​(double d)
        Sets the high value for the range slider, which may or may not be clamped to be within the allowable range as specified by the min and max properties.
      • getHighValue

        public final double getHighValue()
        Returns the current high value for the range slider.
      • highValueChangingProperty

        public final BooleanProperty highValueChangingProperty()
        When true, indicates the current high value of this RangeSlider is changing. It provides notification that the high value is changing. Once the high value is computed, it is set back to false.
        See Also:
        isHighValueChanging(), setHighValueChanging(boolean)
      • setHighValueChanging

        public final void setHighValueChanging​(boolean value)
        Call this when high low value is changing.
        Parameters:
        value - True if the high value is changing, false otherwise.
      • isHighValueChanging

        public final boolean isHighValueChanging()
        Returns whether or not the high value of this RangeSlider is currently changing.
      • getLabelFormatter

        public final StringConverter<Number> getLabelFormatter()
        Gets the value of the property tickLabelFormatter.
        Returns:
        the value of the property tickLabelFormatter.
      • setLabelFormatter

        public final void setLabelFormatter​(StringConverter<Number> value)
        Sets the value of the property tickLabelFormatter.
        Parameters:
        value -
      • adjustLowValue

        public void adjustLowValue​(double newValue)
        Adjusts lowValue to match newValue, or as closely as possible within the constraints imposed by the min and max properties. This function also takes into account snapToTicks, which is the main difference between adjustLowValue and setLowValue.
      • adjustHighValue

        public void adjustHighValue​(double newValue)
        Adjusts highValue to match newValue, or as closely as possible within the constraints imposed by the min and max properties. This function also takes into account snapToTicks, which is the main difference between adjustHighValue and setHighValue.
      • setMax

        public final void setMax​(double value)
        Sets the maximum value for this Slider.
        Parameters:
        value -
      • getMax

        public final double getMax()
        Returns:
        The maximum value of this slider. 100 is returned if the maximum value has never been set.
      • maxProperty

        public final DoubleProperty maxProperty()
        Returns:
        A DoubleProperty representing the maximum value of this Slider. This must be a value greater than min.
      • setMin

        public final void setMin​(double value)
        Sets the minimum value for this Slider.
        Parameters:
        value -
      • getMin

        public final double getMin()
        Returns:
        the minimum value for this Slider. 0 is returned if the minimum has never been set.
      • setSnapToTicks

        public final void setSnapToTicks​(boolean value)
        Sets the value of SnapToTicks.
        Parameters:
        value -
        See Also:
        snapToTicksProperty()
      • isSnapToTicks

        public final boolean isSnapToTicks()
        Returns:
        the value of SnapToTicks.
        See Also:
        snapToTicksProperty()
      • snapToTicksProperty

        public final BooleanProperty snapToTicksProperty()
        Indicates whether the lowValueProperty() value} / highValueProperty() value} of the Slider should always be aligned with the tick marks. This is honored even if the tick marks are not shown.
        Returns:
        A BooleanProperty.
      • setMajorTickUnit

        public final void setMajorTickUnit​(double value)
        Sets the unit distance between major tick marks.
        Parameters:
        value -
        See Also:
        majorTickUnitProperty()
      • getMajorTickUnit

        public final double getMajorTickUnit()
        Returns:
        The unit distance between major tick marks.
        See Also:
        majorTickUnitProperty()
      • majorTickUnitProperty

        public final DoubleProperty majorTickUnitProperty()
        The unit distance between major tick marks. For example, if the min is 0 and the max is 100 and the majorTickUnit is 25, then there would be 5 tick marks: one at position 0, one at position 25, one at position 50, one at position 75, and a final one at position 100.

        This value should be positive and should be a value less than the span. Out of range values are essentially the same as disabling tick marks.

        Returns:
        A DoubleProperty
      • setMinorTickCount

        public final void setMinorTickCount​(int value)
        Sets the number of minor ticks to place between any two major ticks.
        Parameters:
        value -
        See Also:
        minorTickCountProperty()
      • getMinorTickCount

        public final int getMinorTickCount()
        Returns:
        The number of minor ticks to place between any two major ticks.
        See Also:
        minorTickCountProperty()
      • minorTickCountProperty

        public final IntegerProperty minorTickCountProperty()
        The number of minor ticks to place between any two major ticks. This number should be positive or zero. Out of range values will disable disable minor ticks, as will a value of zero.
        Returns:
        An InterProperty
      • setBlockIncrement

        public final void setBlockIncrement​(double value)
        Sets the amount by which to adjust the slider if the track of the slider is clicked.
        Parameters:
        value -
        See Also:
        blockIncrementProperty()
      • getBlockIncrement

        public final double getBlockIncrement()
        Returns:
        The amount by which to adjust the slider if the track of the slider is clicked.
        See Also:
        blockIncrementProperty()
      • blockIncrementProperty

        public final DoubleProperty blockIncrementProperty()
        The amount by which to adjust the slider if the track of the slider is clicked. This is used when manipulating the slider position using keys. If snapToTicks is true then the nearest tick mark to the adjusted value will be used.
        Returns:
        A DoubleProperty
      • setOrientation

        public final void setOrientation​(Orientation value)
        Sets the orientation of the Slider.
        Parameters:
        value -
      • orientationProperty

        public final ObjectProperty<Orientation> orientationProperty()
        The orientation of the Slider can either be horizontal or vertical.
        Returns:
        An Objectproperty representing the orientation of the Slider.
      • setShowTickLabels

        public final void setShowTickLabels​(boolean value)
        Sets whether labels of tick marks should be shown or not.
        Parameters:
        value -
      • isShowTickLabels

        public final boolean isShowTickLabels()
        Returns:
        whether labels of tick marks are being shown.
      • setShowTickMarks

        public final void setShowTickMarks​(boolean value)
        Specifies whether the Skin implementation should show tick marks.
        Parameters:
        value -
      • isShowTickMarks

        public final boolean isShowTickMarks()
        Returns:
        whether the Skin implementation should show tick marks.
      • showTickMarksProperty

        public final BooleanProperty showTickMarksProperty()
        Returns:
        A BooleanProperty that specifies whether the Skin implementation should show tick marks.
      • getClassCssMetaData

        public static List<CssMetaData<? extends Styleable,​?>> getClassCssMetaData()
        Returns:
        The CssMetaData associated with this class, which may include the CssMetaData of its super classes.
      • getUserAgentStylesheet

        protected final String getUserAgentStylesheet​(Class<?> clazz,
                                                      String fileName)
        A helper method that ensures that the resource based lookup of the user agent stylesheet only happens once. Caches the external form of the resource.
        Parameters:
        clazz - the class used for the resource lookup
        fileName - the name of the user agent stylesheet
        Returns:
        the external form of the user agent stylesheet (the path)