Skip to content

Slider ​

Since 2.2.33

Slider selects a float in a [min, max] range. It is the value-picking counterpart to Scroller: its handle has a fixed size, while a scroller handle represents viewport size. Two concrete variants are registered:

  • slider-horizontal — horizontal slider, 7 px high by default.
  • slider-vertical — vertical slider, 7 px wide by default.

Dragging the handle, left-clicking the track, or using the mouse wheel changes the value. Slider extends BindableUIElement<Float>, so it can use normal data bindings.

Horizontal and vertical Slider components in a real LDLib2 UI
Horizontal and vertical variants rendered in the client. The filled track shows the current value; the square is the draggable handle.

INFO

Everything documented on UIElement applies here too: layout, styles, events, and data bindings.


Usage ​

java
var volume = new Slider.Horizontal()
        .setRange(0f, 100f)
        .setValue(40f)
        .setOnValueChanged(value -> saveVolume(value));
volume.sliderStyle(style -> style.sliderStep(0.05f));
parent.addChild(volume);

var vertical = new Slider.Vertical().setRange(-1f, 1f);

XML ​

xml
<slider-horizontal min-value="0" max-value="100" value="40"/>
<slider-vertical min-value="-1" max-value="1" value="0"/>
XML attributeTypeDescription
min-valuefloatMinimum value. Default: 0.
max-valuefloatMaximum value. Default: 1.
valuefloatInitial value. Default: 0.

Internal Structure ​

FieldCSS classDescription
trackContainer.__slider_track_container__Full hit area; receives track clicks and wheel events.
track.__slider_track__The thin background line.
fill.__slider_fill__Filled line from minimum to the current value.
handle.__slider_handle__Fixed-size draggable Button.

Slider Style ​

INFO

slider-step

​

Fraction of the full range moved by one mouse-wheel notch. Default: 0.1.

java
slider.sliderStyle(style -> style.sliderStep(0.05f));

INFO

slider-track-size

​

Track thickness in pixels. Default: 1.

java
slider.sliderStyle(style -> style.trackSize(2));

INFO

slider-handle-size

​

Handle length along the track in pixels. Default: 3.

java
slider.sliderStyle(style -> style.handleSize(6));

Value Binding ​

java
slider.bind(DataBindingBuilder.floatVal(
        () -> state.getVolume(),
        value -> state.setVolume(value)
).build());

See Data Bindings for sync strategies and lifecycle rules.


Fields ​

NameTypeAccessDescription
trackContainerUIElementpublic finalFull slider hit area.
trackUIElementpublic finalBackground line.
fillUIElementpublic finalFilled value line.
handleButtonpublic finalDraggable handle.
sliderStyleSliderStyleprivate (getter)Current slider style.
minValue / maxValuefloatprotected (getter)Current range endpoints.
isDraggingbooleanprotected (getter)true while dragging the handle.

Methods ​

MethodReturnsDescription
setRange(float, float)SliderSets the range and clamps the current value.
setMinValue(float) / setMaxValue(float)SliderChanges one range endpoint.
setValue(Float)SliderSets the clamped value and notifies listeners.
setValue(Float, boolean)SliderSets the value; pass false to suppress notification.
setNormalizedValue(float)SliderSets a normalized 0..1 position.
getNormalizedValue()floatGets the normalized position.
slideValue(float)voidMoves by a normalized range fraction.
setOnValueChanged(FloatConsumer)SliderRegisters a value listener.
sliderStyle(Consumer<SliderStyle>)SliderConfigures style fluently.
trackContainer(...), track(...), fill(...), handle(...)SliderConfigures internal elements.

Released under the MIT License.