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:
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::