• P32 JProgressBar进度条


    系统:Win10
    Java:1.8.0_333
    IDEA:2020.3.4
    Gitee:https://gitee.com/lijinjiang01/JavaSwing

    1.概述

    JProgressBar:进度条。
    以可视化形式显示某些任务进度的组件。
    进度条中心可显示进度百分比的文本表示形式。
    当一个任务的进度长度未知时,可将进度条设置为不确定模式。不确定模式的进度条持续地显示动画来表示正进行的操作。当可以确定任务长度和进度量时,则可设置进度条的最大最小值,以及更新进度条的进度值,将其切换回确定模式。
    JProgressBar 常用构造方法:

    /**
     * 构造方法中的参数含义:
     *     orient: 进度条的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL,默认为水平方向
     *     min: 最小进度值
     *     max: 最大进度值
     */
    JProgressBar()
    
    JProgressBar(int orient)
    
    JProgressBar(int min, int max)
    
    JProgressBar(int orient, int min, int max)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    JProgressBar 常用方法:

    // 设置 最小进度值、最大进度值、当前进度值
    void setMinimum(int min)
    void setMaximum(int max)
    void setValue(int n)
    
    // 获取当前进度值
    int getValue()
    
    // 获取当前进度的百分比
    double getPercentComplete()
    
    // 是否绘制百分比文本(进度条中间显示的百分数)
    void setStringPainted(boolean b)
    
    // 设置进度条进度是否为不确定模式
    void setIndeterminate(boolean newValue)
    
    // 设置进度条的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL
    void setOrientation(int newOrientation)
    
    // 添加进度条的进度改变监听器
    void addChangeListener(ChangeListener l)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    2.代码实例

    import com.lijinjiang.beautyeye.BeautyEyeLNFHelper;
    import javax.swing.*;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class Demo01 {
        private static final int MIN_PROGRESS = 0;
        private static final int MAX_PROGRESS = 100;
    
        private static int currentProgress = MIN_PROGRESS;
    
        public static void main(String[] args) {
            try {
                BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.generalNoTranslucencyShadow;
                BeautyEyeLNFHelper.launchBeautyEyeLNF();
            } catch (Exception e) {
                e.printStackTrace();
            }
            JFrame frame = new JFrame("Demo01");
            frame.setSize(250, 250);
    
            JPanel panel = new JPanel();
    
            // 创建一个进度条
            final JProgressBar progressBar = new JProgressBar();
    
            // 设置进度的 最小值 和 最大值
            progressBar.setMinimum(MIN_PROGRESS);
            progressBar.setMaximum(MAX_PROGRESS);
    
            // 设置当前进度值
            progressBar.setValue(currentProgress);
    
            // 绘制百分比文本(进度条中间显示的百分数)
            progressBar.setStringPainted(true);
    
            // 添加进度改变通知
            progressBar.addChangeListener(new ChangeListener() {
                @Override
                public void stateChanged(ChangeEvent e) {
                    System.out.println("当前进度值: " + progressBar.getValue() + "; " +
                            "进度百分比: " + progressBar.getPercentComplete());
                }
            });
    
            // 添加到内容面板
            panel.add(progressBar);
            frame.add(panel);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
    
            // 模拟延时操作进度, 每隔 0.5 秒更新进度
            new Timer(500, new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    currentProgress++;
                    if (currentProgress > MAX_PROGRESS) {
                        currentProgress = MIN_PROGRESS;
                    }
                    progressBar.setValue(currentProgress);
                }
            }).start();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67

    3.效果演示

    在这里插入图片描述

  • 相关阅读:
    k8s暴露集群内和集群外服务的方法
    跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?
    C++---模板
    Kotlin:协程基础
    GraphQL vs REST:API设计的现代选择
    计算某个整数含有几位数
    Autowired注解与Resource注解的区别
    【数据结构与算法】LinkedList与链表(下)
    钉钉机器人消息推送composer拓展 laravel-dingbot
    gateway的GlobalFilter调用feign后,发现GlobalFilter不起作用
  • 原文地址:https://blog.csdn.net/qq_35132089/article/details/126900456