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);
    }

     

  • 相关阅读:
    Android录制音频的三种方式
    LeetCode Maximum Gap
    Android中BroadcastReceiver组件具体解释
    shell命令技巧——文本去重并保持原有顺序
    HDU 1284 钱币兑换问题(全然背包:入门题)
    【物联网云端对接-1】 通过HTTP协议与微软Azure IoT hub进行云端通信
    LoRa无线通信设计(一)原理
    leetCode 77.Combinations (组合)
    USACO4.2.1 网络流最大流算法
    [error:没有解析库]Couldn't find a tree builder with the features you requested: xml. Do you need to install a parser library?
  • 原文地址:https://www.cnblogs.com/liuyuanyuanGOGO/p/JProgress_Timer.html
Copyright © 2011-2022 走看看