java - slider 与进度条 JavaFX 的混合

标签 java user-interface javafx desktop

我想像在 slider 上一样处理 ProgressBar 上的点击。并学习一定百分比的轨道。 我会使用 slider 而不是 progressbar 但它没有突出显示的轨道直到拇指。

我需要创建一些东西,比如在播放歌曲的音乐播放器中的进度,以及通过点击进度来寻找的可能性。

有人知道我该怎么做吗?

最佳答案

这是另一种方法。 slider 和进度条的真正混合:)。认识 SlidoProgressBar!

public class SlidoProgressBarDemo extends Application {

    @Override
    public void start(Stage stage) {
        Group root = new Group();
        Scene scene = new Scene(root);
        scene.getStylesheets().add(this.getClass().getResource("style.css").toExternalForm());
        stage.setScene(scene);
        stage.setTitle("Progress Controls");

        double sliderWidth = 200;

        final Slider slider = new Slider();
        slider.setMin(0);
        slider.setMax(50);
        slider.setMinWidth(sliderWidth);
        slider.setMaxWidth(sliderWidth);

        final ProgressBar pb = new ProgressBar(0);
        pb.setMinWidth(sliderWidth);
        pb.setMaxWidth(sliderWidth);

        final ProgressIndicator pi = new ProgressIndicator(0);

        slider.valueProperty().addListener(new ChangeListener<Number>() {
            public void changed(ObservableValue<? extends Number> ov,
                    Number old_val, Number new_val) {
                pb.setProgress(new_val.doubleValue() / 50);
                pi.setProgress(new_val.doubleValue() / 50);
            }
        });

        StackPane pane = new StackPane();

        pane.getChildren().addAll(pb, slider);

        final HBox hb = new HBox();
        hb.setSpacing(5);
        hb.setAlignment(Pos.CENTER);
        hb.getChildren().addAll(pane, pi);

        scene.setRoot(hb);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

使用 style.css:

.slider .track {
    -fx-background-color:null;  /* Hide the track */
    -fx-background-insets: 1 0 -1 0, 0, 1;
    -fx-background-radius: 2.5, 2.5, 1.5;
    -fx-padding: 0.208333em; /* 2.5 */
}

基本逻辑是将 slider 和进度放入堆栈 Pane 。给它们相同的宽度。绑定(bind)它们的进度值。隐藏 slider 的轨迹。
输出:
enter image description here

关于java - slider 与进度条 JavaFX 的混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14157161/

相关文章:

java - 为呈现为 SimpleObjectProperty<ImageView> 的 JavaFX TableView 列定义自定义比较器

java - 导入包但出现访问限制类型错误

java - Swing 应用程序在多显示器配置上速度变慢

java - 如何围绕当前位置画一个圆?

java - 将日期时间插入数据库

java - Android - 动画完成后删除 View

javascript - JavaScript 中的 UI 模式

JavaFX 警报信息不再显示 ContentText 不知道为什么

java - 使用行分隔符获取额外的行

java - 数组中的三个最大值