javaFX学习之 进度条(ProgressBar)和进度指示器(ProgressIndicator)「建议收藏」

javaFX学习之 进度条(ProgressBar)和进度指示器(ProgressIndicator)「建议收藏」原文链接:DOC-03-19进度条(ProgressBar)和进度指示器(ProgressIndicator)|JavaFX中文资料进度指示器(ProgressIndicator)和进度条(Prog

原文链接:DOC-03-19 进度条(Progress Bar)和进度指示器(Progress Indicator) | JavaFX中文资料

进度指示器(ProgressIndicator)和进度条(Progressbar),这两个控件用于在JavaFX应用程序中对操作的进度进行可视化

ProgressIndicator类及其直接子类ProgressBar具有显示任务正在处理过程中并且目前处理进度是多少的功能。ProgressBar类使用带有完成度的长条来展示进度,而ProgressIndicatro则以动态变化的饼图来展示进度

ProgressBar ProgressIndicator

javaFX学习之 进度条(ProgressBar)和进度指示器(ProgressIndicator)「建议收藏」 

创建进度展示控件 

所示的代码片段来在你的JavaFX应用程序中插入进度展示控件。

实现ProgressBar 和ProgressIndicator

1
2

ProgressBar pb = new ProgressBar(0.6);
ProgressIndicator pi = new ProgressIndicator(0.6);

 你也可以使用不带参数的空构造方法来创建进度展示控件。在这种情况下,你可以使用setProgress方法来分配进度值

有时候应用程序无法确定完成任务所需的时间,在这种情况下进度展示控件会保持在不确定模式(Indetermine mode),直到完成任务时长确定为止。展示了进度展示控件根据其进度变量值而处在的不同状态 

 进度展示控件的不同状态

javaFX学习之 进度条(ProgressBar)和进度指示器(ProgressIndicator)「建议收藏」 

 

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class ProgressTest extends Application {

    final Float[] values = new Float[] {-1.0f, 0f, 0.6f, 1.0f};//进度值数组
    final Label [] labels = new Label[values.length];//文本标签对象数组
    final ProgressBar[] pbs = new ProgressBar[values.length];//进度条数组
    final ProgressIndicator[] pins = new ProgressIndicator[values.length];//进度指示器数组
    final HBox hbs [] = new HBox [values.length];//水平盒子布局对象数组

    @Override
    public void start(Stage stage) throws InterruptedException {
        Group root = new Group();//节点组容器对象的创建
        Scene scene = new Scene(root, 300, 250);//创建场景对象
        stage.setScene(scene);//设置场景对象到舞台上
        stage.setTitle("进度条控件");

        for (int i = 0; i < values.length; i++) {
            final Label label = labels[i] = new Label();//创建一个label对象
            label.setText("progress:" + values[i]);//文本标签设置文本值

            final ProgressBar pb = pbs[i] = new ProgressBar();//创建进度条
            pb.setProgress(values[i]);//设置进度值

            final ProgressIndicator pin = pins[i] = new ProgressIndicator();//创建进度展示器对象
            pin.setProgress(values[i]);//设置进度值
            final HBox hb = hbs[i] = new HBox();//创建水平布局box对象
            hb.setSpacing(5);//设置间隙空间值
            hb.setAlignment(Pos.CENTER);//设置水平盒子布局器的对齐方式
            hb.getChildren().addAll(label, pb, pin);//水平盒子布局对象添加节点元素对象
        }

        final VBox vb = new VBox();//设置垂直盒子布局器对象
        vb.setSpacing(5);//设置间隙空间值
        vb.getChildren().addAll(hbs);//垂直盒子布局对象中添加水平盒子布局对象
        scene.setRoot(vb);//场景对象中添加垂直盒子对象
        stage.show();//舞台展现
    }

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

 进度变量使用一个0到1之间的正数来表示进度的百分比,0.9表示90%。如果进度变量使用负数则表示对应的进度展示控件处于不确定模式。可以使用isIndeterminate方法来检查进度展示控件是否处于不确定模式中

根据Slider的位置来设置ProgressBar和ProgressIndicator的值 

根据Slider设置进度值

import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.control.Slider;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class ProgressBarTest extends Application {

    @Override
    public void start(Stage stage) {
        Group root = new Group();//节点组容器对象的创建
        Scene scene = new Scene(root);//创建场景对象,场景对象上挂载节点组对象
        stage.setScene(scene);//舞台对象上挂载场景对象
        stage.setTitle("舞台上的标题");

        final Slider slider = new Slider();//创建滑块组件
        slider.setMin(0);//设置滑块最小值
        slider.setMax(50);//设置滑块最大值

        final ProgressBar pb = new ProgressBar(0);//创建进度条对象
        final ProgressIndicator pi = new ProgressIndicator(0);//创建进度展示器对象

        slider.valueProperty().addListener(//滑块组件的事件交互监听器的添加
                (ObservableValue<? extends Number> ov, Number old_val,
                 Number new_val) -> {//事件处理回到函数的实现
                    pb.setProgress(new_val.doubleValue()/50);//进度值的设置
                    pi.setProgress(new_val.doubleValue()/50);//进度值的设置
                });

        final HBox hb = new HBox();//创建水平布局盒子
        hb.setSpacing(5);//设置水平盒子中的布局间隙空间值
        hb.setAlignment(Pos.CENTER);//设置水平盒子布局器的对齐方式
        hb.getChildren().addAll(slider, pb, pi);//水平盒子布局对象上添加相关节点元素对象
        scene.setRoot(hb);//场景对象上添加水平盒子对象
        stage.show();//舞台展映
    }
    public static void main(String[] args) {
        launch(args);//启动javaFX入口程序
    }
}

 _________________

javaFX学习之 进度条(ProgressBar)和进度指示器(ProgressIndicator)「建议收藏」

 程序中的ChangeListener用于当Slider的值发生了改变时计算出应该给Progress Bar和Progress
Indicator设置的值,确保进度展示控件的值的范围在0.0到1.0之间

今天的文章javaFX学习之 进度条(ProgressBar)和进度指示器(ProgressIndicator)「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/70801.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注