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.