Java implémente l'effet de chargement de la barre de progression

Table des matières

Préface

1. Implémentation de Java Swing

2. Java pour l'implémentation du parcours de boucle


Préface

        Les barres de progression sont déjà très courantes dans les logiciels que nous utilisons quotidiennement, mais en dehors de l'installation ou de la mise à jour des logiciels, elles ne sont généralement visibles que sur les pages Web. Cet article souhaite expliquer comment utiliser le code Java pour obtenir l'effet de chargement de la barre de progression.


1. Implémentation de Java Swing

Swing  peut être utilisé pour créer des barres de progression de chargement pour certaines pages, ce qui est très bien et a un bel effet. La configuration peut également être ajustée en fonction de vos propres besoins.

Code: 

import javax.swing.*;
import java.awt.*;

/**
 * 加载进度条
 */
public class StartLoadingView extends JWindow implements Runnable {

    /*** 定义加载窗口大小*/
    public static final int LOAD_WIDTH = 1075;// 页面宽度
    public static final int LOAD_HEIGHT = 604;// 页面高度

    /*** 获取屏幕窗口大小*/
    public static final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
    public static final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;

    /*** 定义进度条组件*/
    public JProgressBar progressbar;

    /*** 定义标签组件*/
    public JLabel label;

    // 构造函数
    public StartLoadingView() {

        // 创建标签,并在标签上放置一张背景图
        label = new JLabel(new ImageIcon("C:\\Users\\admin\\Desktop\\java.jpg"));// 这里放页面要展示的背景图
        label.setBounds(0, 0, LOAD_WIDTH, LOAD_HEIGHT - 15);
        // 创建进度条
        progressbar = new JProgressBar();
        // 显示当前进度值信息
        progressbar.setStringPainted(true);
        // 设置进度条边框不显示
        progressbar.setBorderPainted(false);
        // 设置进度条已加载的背景色
        progressbar.setForeground(new Color(210, 0, 80, 255));
        // 设置进度条未加载的背景色
        progressbar.setBackground(new Color(188, 190, 194));
        progressbar.setBounds(0, LOAD_HEIGHT - 15, LOAD_WIDTH, 15);
        // 添加组件
        this.add(label);
        this.add(progressbar);
        // 设置布局为空
        this.setLayout(null);
        // 设置窗口初始位置
        this.setLocation((WIDTH - LOAD_WIDTH) / 2, (HEIGHT - LOAD_HEIGHT) / 2);
        // 设置窗口大小
        this.setSize(LOAD_WIDTH, LOAD_HEIGHT);
        // 设置窗口显示
        this.setVisible(true);
    }

    public static void main(String[] args) {
        StartLoadingView t = new StartLoadingView();
        new Thread(t).start();
    }

    @Override
    public void run() {
        for (int i = 0; i <= 100; i++) {
            try {
                // 加载进度条需要用到多少秒,20就是2秒
                Thread.sleep(20);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            progressbar.setValue(i);
        }
        JOptionPane.showMessageDialog(this, "程序加载成功");
        this.dispose();
        // 如果这里不继续执行代码,将关闭本次运行
    }

}

2. Java pour l'implémentation du parcours de boucle

    public static void main(String[] args) {
        char incomplete = '░'; // U+2591 Unicode Character 表示还没有完成的部分
        char complete = '█'; // U+2588 Unicode Character 表示已经完成的部分
        int total = 100;
        StringBuilder builder = new StringBuilder();
        Stream.generate(() -> incomplete).limit(total).forEach(builder::append);
        for (int i = 0; i < total; i++) {
            builder.replace(i, i + 1, String.valueOf(complete));
            String progressBar = "\r" + builder;
            String percent = " " + (i + 1) + "%";
            System.out.print(progressBar + percent);
            try {
                // 这里为了表示越到后面越慢的场景,所以这里的sleep不是一个固定的数值。
                Thread.sleep(i * 5L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

1. Créez d'abord la partie inachevée via Stream.generate() .Ici, utilisez StringBuilder pour créer un objet chaîne et remplissez-le via la méthode append, comme suit : Stream.generate(() -> incomplete).limit(total) .forEach (builder :: append);

2.  Réglez le total sur 100 et limitez la longueur. Utilisez ensuite une boucle for pour remplacer continuellement les parties inachevées, en remplaçant les caractères un par un par les caractères terminés, builder.replace(i, i + 1, String.valueOf(complete)) .

PS : Voici trois éléments dont vous avez besoin :

  • La barre de progression est toujours affichée sur une ligne sans changer de nombre, nous devons donc utiliser  la méthode System.out.print() pour afficher, et non la méthode System.out.println(); si nous utilisons directement la méthode System.out .print() ); Si vous sortez, vous constaterez que même si elle apparaît sur la même ligne, elle deviendra de plus en plus longue et la chaîne de chaque boucle sera connectée à la fin, ce qui n'est pas possible. Nous devons donc ici utiliser le symbole de retour chariot. Tout le monde sait que \r\n est utilisé pour le retour chariot et le saut de ligne. En fait, ces deux symboles \r est un retour chariot et \n est un saut de ligne. Entrée déplace le curseur au début de la ligne et le saut de ligne déplace le curseur à la ligne suivante.
  • La barre de progression changera lentement en fonction du réseau et de la taille du paquet de ressources lors du téléchargement, nous devons donc avoir une certaine vitesse et ne pouvons pas tout terminer en même temps. Ici, nous pouvons simplement l'implémenter via Thread.sleep( ) ;

Si cet article vous est utile ou inspirant, veuillez cliquer sur trois liens : aimer, commenter, collecter ➕ suivre. Votre soutien est ma plus grande motivation pour continuer à écrire. 

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42555014/article/details/133376030
conseillé
Classement