java 进度条实现原理_java 做一个真的进度条去实时获取方法进行状态

场景:

导入案件的时候,由于导入数据量大的时候。loading的前台效果要转很久给用户体验不好,不知道进行了多少。想要能看到数据导入的状态和导入的数量的进度条。而且不是假的。现在网上大多数的做法是写个假的样式方式跟loading差不多。这里要写个真的

问题: 导入案件的后台操作比较复杂,没有想出在方法执行完毕之前去前台返回各个状态的值,方法里包含excel数据的校验和一条数据要分别导入4张表中的问题。所以这里的解决方法是个真的去查状态的方法,但也没法做到特别精准。

解决思路:

在导入方法的类中添加几个静态变量,在不同步骤的时候附上不同的值,在做一个全新的方法。用js定时器去,每隔1-2秒实时查询这些变量的值判断当前进入哪个步骤的导入量等。这样就能获得大致获得导入方法进行的进度

实现结果:

0818b9ca8b590ca3270a3433284dd417.png

代码实现:

第一在导入方法的类定义静态变量再在进行到各步骤的时候赋值。

public static Integer checkStatus=null;//0正在进行 1成功

public static Integer caseCount=null;//案件导入个数

public static Integer contectStatus=null;//0正在进行 1成功

public static Integer lineNumber=null;//excel总行数

@Override

public Batch cuishouSaveCaseBatchData(final String batchcode, final Date wtdate, final Date wtenddate,

final String batchid, final String preCaseId, final String biztype, final String bankcode,

final ContractHead contractHead, final String companyid, MultipartFile file,

ContractLineService contractLineService, final Integer tabletype) throws Exception {

logger.error("进入导入方法");

//进入方法给checkStatus赋值0表示方法正在进行中

checkStatus=0;

//获取excel的行数

int allCounts = ExcelReader.readExcelRowCounts(file)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java实现进度条的开发过程一般分为以下几个步骤: 1. 创建进度条组件:使用JProgressBar类创建进度条组件,并设置进度条的最小值、最大值和初始值; 2. 设置进度条样式:可以通过setUI()方法来设置进度条的UI样式,也可以使用L&F来设置进度条的样式; 3. 更新进度条数值:通过setValue()方法来更新进度条的数值,可以在需要更新进度条数值的地方调用该方法; 4. 监听进度条数值变化:可以通过addChangeListener()方法来添加监听器,实时监听进度条数值的变化,以便在进度条数值发生变化时出相应的处理。 下面是一个简单的Java实现进度条的示例代码: ```java import javax.swing.*; import java.awt.*; public class ProgressBarDemo extends JFrame { private JProgressBar progressBar; // 进度条组件 public ProgressBarDemo() { setTitle("进度条示例"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 100); setLocationRelativeTo(null); // 创建进度条组件,设置最小值、最大值和初始值 progressBar = new JProgressBar(JProgressBar.HORIZONTAL, 0, 100); progressBar.setValue(0); // 将进度条组件添加到窗口中 Container contentPane = getContentPane(); contentPane.add(progressBar, BorderLayout.CENTER); // 模拟进度条更新 for (int i = 0; i <= 100; i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } progressBar.setValue(i); } } public static void main(String[] args) { new ProgressBarDemo().setVisible(true); } } ``` 在上面的示例代码中,我们创建了一个ProgressBarDemo类,该类继承自JFrame类,实现了一个简单的进度条示例。在构造函数中,我们创建了一个进度条组件,并设置了最小值、最大值和初始值,然后将进度条组件添加到窗口中。在模拟进度条更新的过程中,我们使用了Thread.sleep()方法来模拟耗时操作,每隔100毫秒更新一次进度条的数值。最终,我们可以看到一个进度条在窗口中不断更新,直到达到100%的进度

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值