Slider CSS skinning

David Grieve david.grieve at oracle.com
Wed Nov 27 16:27:45 PST 2013


Here is one way that uses a linear-gradient style where the stop offsets  are defined by the slider value

public void startx(Stage stage)
        VBox vbox = new VBox(4);
        final Slider slider = new Slider();
        SliderSkin skin = new SliderSkin(slider);
        slider.setSkin(skin);
        
        final Node track = slider.lookup(".track");
        if (track != null) {
            slider.valueProperty().addListener((observable,oldValue,newValue)-> {
                track.setStyle("-fx-background-color: linear-gradient(to right, red " + newValue.intValue() + "%, green " + newValue.intValue()+ "%);");
                System.out.println(track.getStyle());
            });
        }
        vbox.getChildren().add(slider);
        Scene scene = new  Scene(vbox, 300, 100);
        stage.setScene(scene);
        stage.show();
}

On Nov 27, 2013, at 5:22 PM, Pedro Duque Vieira <pedro.duquevieira at gmail.com> wrote:

> Hi,
> 
> Is it possible to style the slider color from the start until the position
> of the thumb only?
> 
> I'm trying to skin the slider to look like one from windows 8:
> http://1.bp.blogspot.com/-29UFZrwHiAY/UL8vviDkh_I/AAAAAAAAAl0/Bm4KmR1XijA/s1600/slider.png
> 
>> From what I've seen of the code this does not seem possible.
> I think this should be possible as there are several operating systems
> whose sliders show a color between the start and the the thumb position.
> 
> Thanks, regards,
> 
> -- 
> Pedro Duque Vieira



More information about the openjfx-dev mailing list