Cet article décrit la mise en œuvre des fonctions de surveillance des progrès des composants de swing Java. Partagez-le pour votre référence, comme suit:
Exemple 1:
Importer java.awt.event.actionEvent; import java.awt.event.actionListener; import javax.swing.progressMonitor; import javax.swing.timer; classe publique testProgressMonitor {temporisateur de temporisation; public void init () {final simuledTargetMi Target = new simuledTargetMi (1000); // Exécuter une tâche chronophage en démarrant un thread Final Thread TargetThread = nouveau thread (cible); TargetThread.start (); // Créer une boîte de dialogue Progress Final ProgressMonitor Dialog = new ProgressMonitor (NULL, "En attendant que la tâche se termine, veuillez ne pas fermer la fenêtre avant la fin de la tâche, sinon l'opération actuelle sera annulée ...", "terminé: 0,00%", 0, cible.getAmount ()); // Créer un temporisateur de minuterie = nouveau temporisateur (300, new ActionListener () {public void ActionPerformed (ActionEvent e) {// Définissez le rapport d'achèvement de la boîte de dialogue Progress avec la quantité d'achèvement actuelle de la boîte de dialogue de dialogue de la tâche. Boîte de dialogue if (Dialog.iscanceLed ()) {// Arrêtez la minuterie.stop (); timer.start (); } public static void main (String [] args) {new TestProgressMonitor (). init (); }} // simule une classe de tâches qui prend du temps simulédTargetMi implémente Runnable {// L'achèvement de courant de la tâche privé volatile int courant; // Volume de tâche total Montant int privé; public simuledtargetmi (int montant) {current = 0; this.amount = montant; } public int getAmount () {montant de retour; } public int getCurrent () {return current; } // La méthode d'exécution représente le processus de réalisation continue des tâches publiques void run () {while (current <montant) {try {Thread.Sleep (50); } catch (InterruptedException e) {} courant ++; }} public String getpercent () {return String.format ("%. 2f", 100.0 * Current / Montant) + "%"; }}Effet de course:
Exemple 2:
Importer java.awt.flowlayout; import java.awt.font; import java.awt.event.actionEvent; import java.awt.event.actionListener; import java.awt.event.windowadapter; import java.awt.event.windowevent; import javax.swing.box; importation javax.swing.boxlay javax.swing.jframe; import javax.swing.jLabel; import javax.swing.jpanel; import javax.swing.jprogressbar; import javax.swing.timer; classe publique TestJProgressBar {jFrame frame = new JFrame ("www.vevb.com - Indication de progrès en cours ..."); // Créer une barre de progrès verticale JProgressBar Bar = new JProgressBar (jprogressbar.horizontal); JLABEL TIPLABEL = NOUVEAU JLABEL ("TIP:", JLABEL.LEFT); JLabel ContentLabel = new JLabel ("Veuillez ne pas fermer la fenêtre avant la fin de la tâche, sinon l'opération actuelle sera annulée ...", JLabel.Left); JLabel statusLabel = new JLabel ("", jlabel.center); public void init () {frame.setLayout (new FlowLayout ()); frame.setResiSable (false); TipLabel.setfont (New Font ("Serif", Font.Plain, 14)); ContentLabel.setfont (new Font ("Serif", Font.Plain, 14)); StatusLabel.setfont (New Font ("Serif", Font.Plain, 14)); Jpanel Panel = new JPanel (); // FR5.SetBorder (nouveau TitledBorder ("BoxLayout - Y")); PANNEL.SETLAYOUT (new BoxLayout (panneau, boxLayout.y_axis)); PANNEL.ADD (TIPLABEL); panneau.Add (Box.CreatevereticalStrut (2)); PANNEL.ADD (ContentLabel); panneau.Add (Box.CreatevereticalStrut (7)); panneau.add (bar); // panneau.add (box.CreateVeTeticalGlue ()); panneau.Add (Box.CreatevereticalStrut (2)); PANNEL.ADD (StatusLabel); frame.add (panneau, 0); cible final simuledTarget = nouveau simuledTarget (1000); // Exécuter une tâche longue en démarrant un thread final Final Thread = nouveau thread (cible); thread.start (); // définit le pourcentage de l'achèvement du dessin dans la barre de barre de progression Bar Bar.SetStringPained (true); // bar.setPreferredSize (nouvelle dimension (100, 18)); // Définit les valeurs maximales et minimales de la barre de progression, BAR.SetMinimum (0); // utilise la tâche totale comme valeur maximale de la barre de progression bar.setMaximum (cible.getAmount ()); Timer final Timer = new Timer (300, new ActionListener () {public void ActionPerformed (ActionEvent e) {// Définissez la valeur de la barre de progression avec le montant d'achèvement actuel de la tâche Bar Bar.SetValue (Target.getCurrent ()); If (Target.GetAmount () <= Target.getCurrent ()) {StatusLabel.SeTeTText ("Process }}}); timer.start (); frame.setLocationRelaTIVETO (null); frame.setDefaultCloseOperation (jframe.dispose_on_close); // frame.setDefaultCloseOperation (jframe.exit_on_close); frame.addwindowListener (new WindowAdapter () {@Override public void windowClosing (windowEvent e) {thread.interrupt (); timer.stop (); // System exit system.exit (0);}}); // Ce code définit la taille de la fenêtre en fonction des composants placés afin qu'il puisse accueillir tous les composants que vous avez placés frame.pack (); frame.setVisible (true); } public static void main (String [] args) {new TestJProgressBar (). init (); }} // Simuler une classe de tâches qui prend du temps simulédTarget implémente Runnable {// La quantité d'achèvement actuelle de la tâche privée volatile int courant; // Volume de tâche total Montant int privé; public simuledTarget (int Muct) {current = 0; this.amount = montant; } public int getAmount () {montant de retour; } public int getCurrent () {return current; } // La méthode d'exécution représente le processus de réalisation continue des tâches publiques void run () {while (current <montant) {try {Thread.Sleep (20); } catch (InterruptedException e) {} courant ++; }} public String getpercent () {return String.format ("%. 1f", 100.0 * Current / Montant) + "%"; }}Résultats en cours:
Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Structure de données Java et tutoriel d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.