Créer une barre de progression Java à l'aide de la classe JProgressBar

Mehvish Ashiq 12 octobre 2023
Créer une barre de progression Java à l'aide de la classe JProgressBar

Ce tutoriel a pour but de comprendre comment on peut créer une barre de progression Java en utilisant la classe JProgressBar dans l’application SWING. Nous apprendrons également comment afficher des nombres et du texte en tenant compte du niveau auquel la barre de progression est remplie.

Utilisez la classe JProgressBar pour créer une barre de progression Java

Supposons que nous téléchargions/téléchargeons un fichier et que l’opération soit effectuée dans les coulisses sans nous en informer. Nous pouvons nous asseoir pendant des heures et laisser la machine accomplir le chargement/téléchargement.

C’est là que la barre de progression est utile et indique la quantité de travail effectuée. Commencez par la barre de progression horizontale en utilisant la classe JProgressBar, un widget affichant une barre de progression pour les tâches chronophages.

Exemple de code :

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

public class jProgressBarDemoOne {
  public static void main(String[] args) {
    final int MAXIMUM = 100;
    final JFrame jFrame = new JFrame("JProgress Demo One");

    // create horizontal progress bar
    final JProgressBar progressBar = new JProgressBar();
    progressBar.setMinimum(0);
    progressBar.setMaximum(MAXIMUM);
    progressBar.setStringPainted(true);

    // add progress bar to the content pane layer
    jFrame.setLayout(new FlowLayout());
    jFrame.getContentPane().add(progressBar);
    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jFrame.setSize(300, 200);
    jFrame.setVisible(true);

    // update progressbar staring from 0 to 100
    for (int i = 0; i <= MAXIMUM; i++) {
      final int currentNumber = i;
      try {
        SwingUtilities.invokeLater(new Runnable() {
          public void run() {
            progressBar.setValue(currentNumber);
          }
        });
        java.lang.Thread.sleep(100);
      } catch (InterruptedException event) {
        JOptionPane.showMessageDialog(jFrame, event.getMessage());
      }
    }
  }
}

Production:

créer une barre de progression java à l&rsquo;aide de la classe jprogressbar - nombres sur la barre de progression, première partie

créer une barre de progression java à l&rsquo;aide de la classe jprogressbar - nombres sur la barre de progression, deuxième partie

A l’intérieur de la fonction main, nous affectons 100 à la variable MAXIMUM, qui indique l’achèvement de la tâche si ce nombre est visible sur la barre de progression.

Le constructeur JFrame est créé pour afficher une fenêtre sur l’écran de l’ordinateur, et c’est une fenêtre de base pour d’autres composants sur lesquels ils reposent, par exemple, des panneaux, des boutons, une barre de menus, etc.

Ensuite, nous créons une construction de la classe JProgressBar pour créer une barre de progression horizontale. Les méthodes setMinimum() et setMaximum() prennent un entier comme argument utilisé pour définir la valeur minimale et maximale stockée dans le modèle de données de la barre de progression.

La méthode setStringPainted() prend une valeur booléenne pour décider si la barre de progression doit afficher ou non une chaîne de progression. La chaîne est rendue si elle devient true ; sinon, non.

La méthode setLayout() nous permet de définir la disposition du conteneur en tant que FlowLayout pour ce tutoriel. Le FlowLayout ajoute les éléments dans un flux séquentiel (un élément après l’autre dans une ligne) dans le conteneur et déplace l’élément à la ligne suivante s’il ne peut pas tenir sur la ligne courante.

Pour l’instant, nous avons créé une fenêtre, défini la disposition du conteneur et créé une barre horizontale avec une valeur minimale et maximale, et il est temps d’ajouter la barre de progression au conteneur.

Nous utilisons la méthode getContentPane(), qui est utilisée pour accéder à la couche du volet de contenu et nous permettre d’y ajouter l’objet.

Lorsque l’utilisateur clique sur le bouton croix (X), l’événement de fermeture de fenêtre est déclenché, permettant à la fonction setDefaultCloseOperation() de fermer l’application. Le setSize() est utilisé pour définir la largeur et la hauteur de la fenêtre tandis que setvisible() montre la fenêtre aux utilisateurs si elle devient true.

Enfin, les boucles for mettent à jour la barre de progression qui part de 0% et va jusqu’à 100%. Le prochain exemple de code affichera du texte sur la barre de progression au lieu de chiffres.

Exemple de code :

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

public class jProgressBarDemoTwo {
  static int MAXIMUM = 100;
  static JFrame jFrame = new JFrame("JProgress Demo");
  // create horizontal progress bar
  static JProgressBar progressBar = new JProgressBar();

  public static void main(String[] args) {
    progressBar.setMinimum(0);
    progressBar.setMaximum(MAXIMUM);
    progressBar.setStringPainted(true);

    // add progress bar to the content pane layer
    jFrame.setLayout(new FlowLayout());
    jFrame.getContentPane().add(progressBar);

    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jFrame.setSize(300, 200);
    jFrame.setVisible(true);

    // update progressbar by displaying text on it
    int currentNumber = 0;
    try {
      while (currentNumber <= MAXIMUM) {
        // set text considering the level to which the bar is colored/filled
        if (currentNumber > 30 && currentNumber < 70)
          progressBar.setString("wait for sometime");
        else if (currentNumber > 70)
          progressBar.setString("almost finished loading");
        else
          progressBar.setString("loading started");

        // color/fill the menu bar
        progressBar.setValue(currentNumber + 10);
        // delay thread
        Thread.sleep(3000);
        currentNumber += 20;
      }
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Production::

créer une barre de progression java à l&rsquo;aide de la classe jprogressbar - texte sur la barre de progression, première partie

créer une barre de progression java à l&rsquo;aide de la classe jprogressbar - texte sur la barre de progression, deuxième partie

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Article connexe - Java GUI