• java Swing 进度条


    java Swing 进度条

     1 package io.guanghe;
     2 
     3 import javax.swing.*;
     4 
     5 /*
     6     ProgressMonitor的用法与ProgressBar相似 , ProgressMonitor可以直接创建一个进度对话框
     7     提供的构造方法:
     8     public ProgressMonitor(Component parentComponent,Object message,String note,
     9     int min,int max):
    10     parentComponent: 对话框的父组件
    11     message: 对话框的描述信息
    12     note: 进度的提示信息
    13     min: 进度条的最小值
    14     max: 进度条的最大值
    15 */
    16 public class Progress {
    17 
    18     //定时器
    19     Timer timer;
    20     //任务线程
    21     private static class SimulatorActivity implements Runnable {
    22         //内存可见
    23         private volatile int current = 0;
    24         private int amount;
    25         public SimulatorActivity(int amount) {
    26             this.amount = amount;
    27         }
    28         public int getCurrent() {
    29             return current;
    30         }
    31         public void setCurrent(int current) {
    32             this.current = current;
    33         }
    34         public int getAmount() {
    35             return amount;
    36         }
    37         public void setAmount(int amount) {
    38             this.amount = amount;
    39         }
    40         @Override
    41         public void run() {
    42             //通过循环,不断的修改current的值,模拟任务我完成量
    43             while (current < amount) {
    44                 try {
    45                     Thread.sleep(50);
    46                 } catch (InterruptedException e) {
    47                     e.printStackTrace();
    48                 }
    49                 current++;
    50             }
    51         }
    52     }
    53 
    54     private Timer initTimer(ProgressMonitor monitor, SimulatorActivity simulatorActivity) {
    55         //设置定时任务
    56         return new Timer(100, e -> {
    57             //读取当前任务量,修改进度
    58             int current = simulatorActivity.getCurrent();
    59             monitor.setProgress(current);
    60             //判断用户是否点击了取消按钮,停止定时任务,关闭对话框,退出程序
    61             if (monitor.isCanceled()) {
    62                 timer.stop();
    63                 monitor.close();
    64                 System.exit(0);
    65             }
    66             if (current == 100) {
    67                 System.exit(0);
    68             }
    69         });
    70     }
    71 
    72     public void init() {
    73         //创建view
    74         ProgressMonitor monitor = new ProgressMonitor(null, "等待任务完成", "已完成", 0, 100);
    75         //创建任务model
    76         SimulatorActivity simulaterActivity = new SimulatorActivity(100);
    77         //执行任务model
    78         new Thread(simulaterActivity).start();
    79         //开启监听controller
    80         initTimer(monitor, simulaterActivity).start();
    81     }
    82 
    83     public static void main(String[] args) {
    84         new Progress().init();
    85     }
    86 }

     

  • 相关阅读:
    Unity 移动端的复制这么写
    Unity如何管理住Android 6.0 调皮的权限
    谷歌商店Apk下载器
    Unity编辑器下重启
    git pull error
    如何简单的实现新手引导之UGUI篇
    linux系统安装python3.5
    Grafana设置mysql为数据源
    hyper -v 虚拟机(win_server)忘记密码重置
    zabbix报错:the information displayed may not be current
  • 原文地址:https://www.cnblogs.com/guanghe/p/16362132.html
Copyright © 2020-2023  润新知