Java Fx Ui 组件 Slider 自定义控件 Slider(滑块)

本文介绍了如何使用JavaFX自定义Slider组件,通过修改Track和Thumb的样式,实现滑块的美化。示例展示了运行效果,并提供了一个相关学习资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java FX 滑块 Slider 原生的滑动后没有颜色 甚至thumb比较简单 先看下Slider的组成

本文章主要更改Track 和Thumb

public class CustomSlider  extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        BorderPane mainPane = new BorderPane();
        mainPane.setPadding(new Insets(15));

        mainPane.setCenter(new ColorSlider());

        Scene scene = new Scene(mainPane, 250, 400);
        stage.setScene(scene);
        stage.show();


    }
    public class ColorSlider extends StackPane {
        public ColorSlider() {
            getStylesheets().add(this.getClass().getResource("testcss.css").toExternalForm());
            Slider slider = new Slider();
            slider.setId("color-slider");
            Rectangle progressRec = new Rectangle();
            progressRec.heightProperty().bind(slider.heightProperty().subtract(7));
            progressRec.widthProperty().bind(slider.widthProperty());

            progressRec.setFill(Color.web("#c3c3c3"));

            progressRec.setArcHeight(15);
            progressRec.setArcWidth(15);

            slider.valueProperty().addListener(new ChangeListener<Number>() {
                @Override
                public void changed(ObservableValue<? extends Number> ov, Number old_val, Number new_val) {
                    // Using linear gradient we can fill two colors to show the progress
                    // the new_val gets values between 0 - 100
                    String style = String.format("-fx-fill: linear-gradient(to right, #1979ca %d%%, #c3c3c3 %d%%);",
                            new_val.intValue(), new_val.intValue());
                    // set the Style
                    progressRec.setStyle(style);
                }
            });

            getChildren().addAll(progressRec, slider);
        }
    }
}
ColorSlider extends StackPane 然后去加载css样式,下面是我的css样式

看下运行效果图:

这样就完成了并不是很难,有什么问题可以留言。

我在推荐个网站:http://www.javafxchina.net/blog/2015/04/doc03_slider/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值