zoukankan      html  css  js  c++  java
  • JProgressBar与Timer的配套使用

        JProgressBar  的关键在于 setMaxium(int maxValue) 和 setValue(int progressValue);

        当ProgressBar的当前值需要Controller来提供时,遵照MVC结构的编码原则,我们不能向Controller传ProgressBar,

    所以不能在Controller中的逻辑过程中直接setValue,所以这时就需要Timer来为ProgressBar来setValue。

        Timer就像一个定时作业代理,每隔固定delay就向Controller询问一次进度值progressValue并为ProgressBar

    setValue(progressValue),这样就可以实现进度条正常运转。

        注意:setValue后proressBar若无法正常刷新进度条,则尝试一下方法。   

               MigrationController mc = MigrationController.getInstance();
               progressBar.setValue(mc.getProgressValue());        

    Dimension d = progressBar.getSize();
    Rectangle rect = new Rectangle(0, 0, d.width, d.height);

    progressBar.paintImmediately(rect);//立即刷新进度条

     

    JProgressBar与Timer配套使用的主要代码:

    1.初始化JProgressBar(视情况而定)

    progressBar.setMinimum(0);
    progressBar.setMaximum(100);

    progressBar.setValue(0);
    progressBar.setStringPainted(true);
    progressBar.setBorderPainted(true);
    progressBar.setBackground(Color.WHITE);

    2.初始化Timer:

    ActionListener taskPerformer = new ActionListener()
    {
        @Override
        public void actionPerformed(ActionEvent evt)
       {
             timerActionPerformed(evt);
        }
    };
    timer = new Timer(100, taskPerformer);

    3.为JProgressBar设置最大值(在合理的逻辑位置设置)

     progressBar.setMaximum(totalObject);

    4.Timer的监听事件处理

    private void timerActionPerformed(ActionEvent evt)
    {
         logger.info("CurrentProgressValue = " + progressBar.getValue());

         Dimension d = progressBar.getSize();
         Rectangle rect = new Rectangle(0, 0, d.width, d.height);

         MigrationController mc = MigrationController.getInstance();
         progressBar.setValue(mc.getProgressValue());
         progressBar.paintImmediately(rect);
    }

     

  • 相关阅读:
    Linux下安装FTP服务(Ubuntu)
    Ubuntu下无法使用Secure_CRT连接服务器
    Mysql 锁机制
    PHP提取HTML代码中img标签下src属性
    Mysql 隐式转换
    PHPExcel在TP下使用
    ThinkPHP同时操作多个数据库
    PHP 时间相关操作
    ThinkPHP输入验证和I方法使用
    ThinkPHP模板内使用U方法
  • 原文地址:https://www.cnblogs.com/liuyuanyuanGOGO/p/JProgress_Timer.html
Copyright © 2011-2022 走看看