JavaFx,fxml,更新进度条工具类

1.使用时先初始化

// 初始化一个进度条服务类
ProgressBarService pBarSer = new ProgressBarService(progressBar_VBox, null, progressBar_Label2, progressBar, null);
// 绑定Label的text属性到Service的message属性,updateMessage(message)时即会更新UI界面Label的text值
pBarSer.getLabel().textProperty().bind(pBarSer.getService().messageProperty());
// 绑定ProgressBar的progress属性到Service的progress属性,updateProgress(workDone, max)时即会更新UI界面ProgressBar进度条
pBarSer.getProgressBar().progressProperty().bind(pBarSer.getService().progressProperty());
// 打开进度条弹框
pBarSer.displayVBox();

2 使用时调用刷新代码

// 进度条
pBarSer.setMessage("总共下载" + pBarSer.getMax() + "个文件,正在导出第" + (pBarSer.getWorkDone() + 1) + "个文件,该文件为图片文件");
pBarSer.setWorkDone(pBarSer.getWorkDone() + 1);
pBarSer.getService().restart();

3 具体工具类

import javafx.concurrent.Service;
import javafx.concurrent.Task;
import javafx.scene.control.Alert;
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;

/**
 * @ClassName ProgressBarService
 * @Description 进度条更新服务类
 * @Author zhangxiaoyan
 * @Date 2019-04-24 09:14:30
 */
public class ProgressBarService {

	private VBox vBox;
	private HBox hBox;
	private Label label;
	private ProgressBar progressBar;
	private ProgressIndicator progressIndicator;
	private String message;
	private long workDone = 0;
	private long max = 0;

	private boolean toAlert = false;
	private String alertContentText;

	public ProgressBarService(VBox vBox, HBox hBox, Label label, ProgressBar progressBar, ProgressIndicator progressIndicator) {
		this.vBox = vBox;
		this.hBox = hBox;
		this.label = label;
		this.progressBar = progressBar;
		this.progressIndicator = progressIndicator;
	}

	Service<Integer> service = new Service<Integer>() {
		@Override
		protected Task<Integer> createTask() {
			return new Task<Integer>() {
				@Override
				protected Integer call() throws Exception {
					// 更新进度条及其文字
					updateProgress(workDone, max);
					updateMessage(message);
					// 如果进度条已满,暂停一秒后,关闭弹框
					if (workDone >= max) {
						try {
							// 暂停一秒
							Thread.sleep(1000);
							// 关闭弹框
							hideVBox();
							// 是否启动成功或失败的信息提示框
							if (toAlert) {
								Alert alert  = new Alert(Alert.AlertType.INFORMATION);
								alert.setHeaderText("");
								alert.setContentText(alertContentText);
								alert.showAndWait();
							}
						} catch (InterruptedException e) {
							e.printStackTrace();
						}
					}
					return null;
				}
			};
		}
	};

	/**
	 * 显示VBox
	 */
	public void displayVBox() {
		vBox.setManaged(true);
		vBox.setVisible(true);
	}

	/**
	 * 隐藏VBox
	 */
	public void hideVBox() {
		vBox.setManaged(false);
		vBox.setVisible(false);
	}

	/**
	 * 显示HBox
	 */
	public void displayHBox() {
		hBox.setManaged(true);
		hBox.setVisible(true);
	}

	/**
	 * 隐藏HBox
	 */
	public void hideHBox() {
		hBox.setManaged(false);
		hBox.setVisible(false);
	}

	public VBox getvBox() {
		return vBox;
	}

	public void setvBox(VBox vBox) {
		this.vBox = vBox;
	}

	public HBox gethBox() {
		return hBox;
	}

	public void sethBox(HBox hBox) {
		this.hBox = hBox;
	}

	public Label getLabel() {
		return label;
	}

	public void setLabel(Label label) {
		this.label = label;
	}

	public ProgressBar getProgressBar() {
		return progressBar;
	}

	public void setProgressBar(ProgressBar progressBar) {
		this.progressBar = progressBar;
	}

	public ProgressIndicator getProgressIndicator() {
		return progressIndicator;
	}

	public void setProgressIndicator(ProgressIndicator progressIndicator) {
		this.progressIndicator = progressIndicator;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public boolean isToAlert() {
		return toAlert;
	}

	public void setToAlert(boolean toAlert) {
		this.toAlert = toAlert;
	}

	public String getAlertContentText() {
		return alertContentText;
	}

	public void setAlertContentText(String alertContentText) {
		this.alertContentText = alertContentText;
	}

	public long getWorkDone() {
		return workDone;
	}

	public void setWorkDone(long workDone) {
		this.workDone = workDone;
	}

	public long getMax() {
		return max;
	}

	public void setMax(long max) {
		this.max = max;
	}

	public Service<Integer> getService() {
		return service;
	}

	public void setService(Service<Integer> service) {
		this.service = service;
	}
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小言W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值