首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaFX ProgressBar/ProgressIndicator:侦听来自多个滑块的更改

JavaFX ProgressBar/ProgressIndicator:侦听来自多个滑块的更改
EN

Stack Overflow用户
提问于 2016-11-29 20:51:46
回答 1查看 939关注 0票数 0

slider :有多个滑块,希望进度条随滑块的移动而改变。现在,只有一个滑块将移动进度条,但文本字段显示所有数据。

有更好的方法吗?

这是我的代码:

代码语言:javascript
运行
复制
@FXML
ProgressIndicator pb;

@FXML
Slider slider1, slider2, slider3, slider4, slider5, slider6, slider7, slider8;

@Override
public void initialize(URL location, ResourceBundle resources) {

  field.textProperty().bind(Bindings.concat(
            slider1.valueProperty()
            .add(slider2.valueProperty()
            .add(slider3.valueProperty()
            .add(slider4.valueProperty()
            .add(slider5.valueProperty()
            .add(slider6.valueProperty()
            .add(slider7.valueProperty()
            .add(slider8.valueProperty())))))))));

       slider1.valueProperty().addListener(
            (ObservableValue<? extends Number> ov, Number old_val,
             Number new_val) -> {
                    //sets the Progress bar to new value
                pb.setProgress(new_val.doubleValue());


            });
            }

        }

滑块实例

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-30 10:59:20

您可以简单地将progressPropertyProgressIndicator绑定到SlidervalueProperty,同时记住指示器的progressProperty有0到1的边界:

0到1之间的正值表示0为0而1为100%的进度百分比。

一个例子:

代码语言:javascript
运行
复制
Slider slider1 = new Slider(0d, 1d, 0d);
Slider slider2 = new Slider(0d, 1d, 0d);
Slider slider3 = new Slider(0d, 1d, 0d);
Slider slider4 = new Slider(0d, 1d, 0d);

ProgressIndicator pi = new ProgressIndicator();

pi.progressProperty().bind(slider1.valueProperty().divide(4d).add(slider2.valueProperty().divide(4d))
        .add(slider3.valueProperty().divide(4d)).add(slider4.valueProperty().divide(4d)));

VBox vbox = new VBox();
vbox.getChildren().addAll(slider1, slider2, slider3, slider4, pi);

会产生这样的东西:

注:如果您将Sliders的边界从0更新到0.25,则绑定甚至很简单:

代码语言:javascript
运行
复制
Slider slider1 = new Slider(0d, 0.25d, 0d);
Slider slider2 = new Slider(0d, 0.25d, 0d);
Slider slider3 = new Slider(0d, 0.25d, 0d);
Slider slider4 = new Slider(0d, 0.25d, 0d);

ProgressIndicator pi = new ProgressIndicator();

pi.progressProperty().bind(slider1.valueProperty().add(slider2.valueProperty())
        .add(slider3.valueProperty()).add(slider4.valueProperty()));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40875551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档