如何使用ProgressIndicator实现更好的用户体验?

作者:海西麻将开发公司 阅读:33 次 发布时间:2023-05-10 17:46:03

摘要:随着科技的不断发展,人们对于信息的获取渐渐变得越来越快速,因此,对于一个优秀的应用程序来说,快速响应用户的操作是非常重要的,否则,这个应用程序很可能会被用户抛弃。因此,如何让应用程序在处理某项任务时能够更好地提示用户,增强用户体验,这就需要我们使用一些界面...

随着科技的不断发展,人们对于信息的获取渐渐变得越来越快速,因此,对于一个优秀的应用程序来说,快速响应用户的操作是非常重要的,否则,这个应用程序很可能会被用户抛弃。因此,如何让应用程序在处理某项任务时能够更好地提示用户,增强用户体验,这就需要我们使用一些界面控件来实现。今天,我将向大家介绍如何使用ProgressIndicator实现更好的用户体验。

如何使用ProgressIndicator实现更好的用户体验?

一、ProgressIndicator 简介

在理解如何使用ProgressIndicator之前,我们先来了解一下什么是ProgressIndicator。ProgressIndicator是JavaFX中的一个控件,用于表示活动正在进行(例如:应用程序正在加载、正在发送数据等)的状态。可以理解为进度条的一种变形,不同之处在于,进度条通常是做一个较长事件的可确定数量的进度,而ProgressIndicator则是适合动态的、不确定长度的任务。

二、如何使用ProgressIndicator

在这里我会分别介绍如何使用ProgressBar和ProgressIndicator两个控件,并对比它们之间的区别。

1. ProgressBar 的使用

在使用ProgressBar之前,我们需要先了解一下它的一些属性。

(1)progressbar.progress

该属性是一个DoubleProperty类型的属性。设置ProgressBar在进度条上的位置。进度条范围从0.0到1.0。

(2)progressbar.indeterminate

该属性是一个BooleanProperty类型的属性,默认为false。当其为true时,在进度条的位置将会显示一个动态动画。

(3)progressbar.prefWidth

该属性是一个DoubleProperty类型的属性,默认为150.0。设置ProgressBar的首选宽度。

(4)progressbar.prefHeight

该属性是一个DoubleProperty类型的属性,默认为20.0。设置ProgressBar的首选高度。

接下来我们看看如何使用ProgressBar。

```java

import javafx.application.Application;

import javafx.geometry.Insets;

import javafx.geometry.Pos;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.control.ProgressBar;

import javafx.scene.layout.HBox;

import javafx.scene.layout.VBox;

import javafx.stage.Stage;

public class Main extends Application {

@Override

public void start(Stage primaryStage) throws Exception{

Button startBtn = new Button("Start");

Button stopBtn = new Button("Stop");

ProgressBar progressBar = new ProgressBar(0);

progressBar.setPrefSize(500,20);

progressBar.setStyle("-fx-accent:Red;");

HBox hbox = new HBox();

hbox.setSpacing(10);

hbox.setAlignment(Pos.CENTER);

hbox.getChildren().addAll(startBtn,stopBtn);

VBox vbox = new VBox();

vbox.setSpacing(15);

vbox.setPadding(new Insets(20,20,20,20));

vbox.setAlignment(Pos.CENTER);

vbox.getChildren().addAll(progressBar,hbox);

Scene scene = new Scene(vbox, 600, 400);

primaryStage.setScene(scene);

primaryStage.setTitle("ProgressBar Demo");

primaryStage.show();

startBtn.setOnAction(event -> {

progressBar.setProgress(0);

Thread t = new Thread(new Runnable() {

@Override

public void run() {

try {

for (int i=0;i<=100;i++){

Thread.sleep(100);

progressBar.setProgress(i/100.0);

}

}catch (InterruptedException e){

e.printStackTrace();

}

}

});

t.start();

});

stopBtn.setOnAction(event -> {

progressBar.setProgress(0);

});

}

public static void main(String[] args) {

launch(args);

}

}

```

上面的代码演示了如何创建一个ProgressBar,和一些基本的属性的使用方法。这里定义了一个进度条和两个按钮(开始、结束),当点击开始时,进度条会执行从0到100的过程。ProgressBar的颜色可以使用.setStyle()方法进行设置,比如这里我设置了进度条为红色。

然而,在处理不确定数量长度的任务时,使用ProgressBar可能并不适合。因为在这种情况下,我们通常需要在对话框上显示一些不确定长度任务的描述,并且有时我们甚至不知道任务何时会结束。ProgressBar适合处理一些相对固定的任务,例如文件的上传和下载等。

2. ProgressIndicator 的使用

接下来,相比ProgressBar的使用,我们再来探讨一下ProgressIndicator的用法。首先需要注意的是,ProgressIndicator和ProgressBar的属性相比要更简洁。

下面的代码演示如何使用ProgressIndicator控件:

```java

import javafx.application.Application;

import javafx.geometry.Insets;

import javafx.geometry.Pos;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.control.ProgressIndicator;

import javafx.scene.layout.HBox;

import javafx.scene.layout.VBox;

import javafx.stage.Stage;

public class Main extends Application {

@Override

public void start(Stage primaryStage) throws Exception{

Button startBtn = new Button("Start");

Button stopBtn = new Button("Stop");

ProgressIndicator progressIndicator = new ProgressIndicator();

progressIndicator.setPrefSize(80,80);

HBox hbox = new HBox();

hbox.setSpacing(10);

hbox.setAlignment(Pos.CENTER);

hbox.getChildren().addAll(startBtn,stopBtn);

VBox vbox = new VBox();

vbox.setSpacing(15);

vbox.setPadding(new Insets(20,20,20,20));

vbox.setAlignment(Pos.CENTER);

vbox.getChildren().addAll(progressIndicator,hbox);

Scene scene = new Scene(vbox, 600, 400);

primaryStage.setScene(scene);

primaryStage.setTitle("ProgressIndicator Demo");

primaryStage.show();

startBtn.setOnAction(event -> {

progressIndicator.setProgress(ProgressIndicator.INDETERMINATE_PROGRESS);

});

stopBtn.setOnAction(event -> {

progressIndicator.setProgress(0);

});

}

public static void main(String[] args) {

launch(args);

}

}

```

可以看到,ProgressIndicator的属性非常简洁,只有一个indeterminate属性。当该属性为true时,一个无限循环的动画会被创建并且循环展示。这种方式是适合处理不确定长度任务的。

三、ProgressIndicator 使用技巧

使用ProgressBar和ProgressIndicator都有一些技巧,下面我将列出一些比较重要的技巧。

1. 设置进度条颜色

进度条颜色可以使用.setStyle()方法进行设置。对于ProgressBar来说,可以通过这种方式对进度条的颜色进行调整,可以让用户的眼睛更容易地关注到进度条。

```java

progressbar.setStyle("-fx-accent:Red;");

```

2. 设置进度条长度

ProgressBar和ProgressIndicator的长度是不一样的,ProgressBar需要指定其宽度,而ProgressIndicator只需要指定其大小,不需要指定宽和高,它会自动地调整到合适的尺寸。

```java

progressbar.setPrefSize(500,20);

```

3. 创建后台线程

如果我们需要执行耗时的任务,那么我们需要将这些任务放入到单独的线程中,以避免阻塞UI线程。

在下面的示例中,我使用了一个后台线程来模拟任务的长时间执行。在回调函数中,我使用Platform.runLater()来更新UI线程上的ProgressBar或ProgressIndicator的进度。

```java

Thread t = new Thread(new Runnable() {

@Override

public void run() {

try {

for (int i=0;i<=100;i++){

Thread.sleep(100);

Platform.runLater(new Runnable(){

@Override

public void run() {

progressbar.setProgress(i/100.0);

}

});

}

}catch (InterruptedException e){

e.printStackTrace();

}

}

});

t.start();

```

4. 显示任务描述

当我们需要执行一些不确定长度的任务时,在提示用户任务正在进行的同时,我们也应该在UI界面上给出任务描述,告诉用户正在执行什么操作,例如:

```java

Label label = new Label("正在加载,请稍后...");

progressbar = new ProgressBar();

VBox vBox = new VBox(20);

vBox.setAlignment(Pos.CENTER);

vBox.getChildren().addAll(label,progressbar);

```

5. 使用 ProgressIndicator 细节

ProgressIndicator 与 ProgressBar使用时有一些细节需要注意。例如,ProgressIndicator在使用时不能直接设置进度,因为它没有.progress属性,应该调用.setProgress()方法来设置它的进度,使用时不能直接设置进度,应该调用setter方法设置。

```java

progressIndicator.setProgress(ProgressIndicator.INDETERMINATE_PROGRESS);

```

另外,要明白 ProgressIndicator 的工作原理,即它一直在转圈(即 ‘indeterminate progress’)。而 ProgressBar只在指定的范围内执行动画效果,在结束以后就停止了。

四、总结

在JavaFX中,ProgressIndicator和ProgressBar两个控件对于我们来说都是非常有用的。无论是处理确定长度还是不确定长度任务,都可以使用这些控件来为用户提供更好的体验。在使用这些控件时,我们应该着重关注一些使用技巧,例如:设置进度条颜色,创建后台线程等等。在实际中灵活应用这些技巧,可以使我们的界面更加美观,也能增强用户体验。

  • 原标题:如何使用ProgressIndicator实现更好的用户体验?

  • 本文链接:https:////qpzx/6767.html

  • 本文由海西麻将开发公司飞扬众网小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与飞扬众网联系删除。
  • 微信二维码

    CTAPP999

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员


    点击这里给我发消息电话客服专员


    在线咨询

    免费通话


    24h咨询☎️:166-2096-5058


    🔺🔺 棋牌游戏开发24H咨询电话 🔺🔺

    免费通话
    返回顶部