Maison >Java >javaDidacticiel >Comment afficher un JProgressBar indéterminé lors de l'exécution d'un fichier batch en arrière-plan ?

Comment afficher un JProgressBar indéterminé lors de l'exécution d'un fichier batch en arrière-plan ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-04 10:56:11598parcourir

How to Display an Indeterminate JProgressBar While Running a Batch File in the Background?

Afficher une JProgressBar indéterminée pendant l'exécution du fichier batch

Introduction

Dans ce scénario, l'exigence consiste à afficher un JProgressBar indéterminé pendant qu'un fichier batch s'exécute en arrière-plan. Le défi réside dans l'exécution simultanée de plusieurs processus dans Swing, car il est généralement limité à un seul processus.

Solution utilisant SwingWorker

Pour résoudre ce problème, nous pouvons employer un Classe SwingWorker qui exécute le ProcessBuilder dans un thread dédié, nous permettant de mettre à jour le JProgressBar et d'afficher la sortie simultanément avec le processus en cours.

Le code fourni inclut ici des méthodes pour gérer les actions des boutons pour démarrer et arrêter la tâche en arrière-plan. De plus, il intègre un JLabel pour afficher les mises à jour d'état et un JTextArea pour afficher la sortie du fichier batch.

Classe SwingWorker personnalisée (BackgroundTask)

La classe BackgroundTask étend SwingWorker et remplace trois principaux méthodes :

  1. doInBackground() : Cette méthode exécute le fichier batch à l'aide de ProcessBuilder et capture son état de sortie et de sortie.
  2. process() : met à jour le JLabel avec l'état actuel et ajoute la sortie au JTextArea.
  3. done() : désactive le bouton d'arrêt et réactive le bouton de démarrage, tout en définissant la JProgressBar sur indéterminé.

En utilisant cette approche , nous obtenons à la fois une indication de progression et un affichage de sortie pendant l'exécution du fichier batch. Cela élimine la confusion des utilisateurs et offre une meilleure expérience utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn