Dieser Artikel beschreibt die Implementierung der Fortschrittsüberwachungsfunktionen von Java -Swing -Komponenten. Teilen Sie es für Ihre Referenz wie folgt weiter:
Beispiel 1:
importieren java.awt.event.actionEvent; import Java.awt.event.ActionListener; Import Javax.swing.ProgressMonitor; Import Javax.swing.timer; öffentliche Klassen -Testprogressmonitor {Timer -Timer; public void init () {endgültig simuledTargetMi target = new SimuledTargetMi (1000); // Führen Sie eine zeitaufwändige Aufgabe aus, indem Sie einen Thread-Thread-ThreadThread = neuer Thread (Ziel) starten. tatageThread.start (); // Erstellen Sie einen Fortschritts -Dialog für den endgültigen ProgressMonitor -Dialog = New ProgressMonitor (NULL, "Warten auf die Aufgabe, bitte schließen Sie das Fenster nicht, bevor die Aufgabe abgeschlossen ist. Andernfalls wird der aktuelle Vorgang abgebrochen ...", "abgeschlossen: 0,00%", 0, target.getAmount ()); // Timer Timer = New Timer (300, New ActionListener () {public void actionPerformed (actionEvent e) {// Setzen Sie das Abschlussverhältnis des Dialogfelds Fortschritt mit dem aktuellen Abschlussbetrag des Task -Dialogs mit dem Dialog. Dialogfeld if (dialog.iscanceled ()) {// Timer Timer.Stop (); Timer.Start (); } public static void main (String [] args) {new TestProgressMonitor (). init (); }} // Simulieren Sie eine zeitaufwändige Aufgabenklasse SimulatedTargetMi implementiert Runnable {// Die aktuelle Fertigstellung der Aufgabe private volatile int-Strom; // Gesamtaufgabenvolumen privater Int -Betrag; public simuledTargetMi (intmenge) {current = 0; this.amount = Menge; } public int getAmount () {Rückgabebetrag; } public int getCurrent () {Return Current; } // Die Auslaufmethode repräsentiert den Prozess der kontinuierlichen Ausführung von Aufgaben public void run () {while (aktuelle <senze) {try {thread.sleep (50); } catch (InterruptedException e) {} current ++; }} public String getSpercent () {return string.format ("%. 2f", 100.0 * Strom / Menge) + "%"; }}Laufeffekt:
Beispiel 2:
Import Java.awt.flowlayout; Import Java.awt.font; Import Java.awt.event.ActionEvent; Import Java.awt.event.ActionListener; javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jprogressbar; import javax.swing.timer; public class testJProgressBar {jframe Fram = new JFrame ("www.vevb.com - aktuelle Fortschrittsanzeige ..."); // Erstellen Sie eine vertikale Fortschrittsbalken. Jlabel Tiplabel = new Jlabel ("Tipp:", Jlabel.Left); JLabel contentLabel = new JLabel ("Bitte schließen Sie das Fenster nicht, bevor die Aufgabe abgeschlossen ist, andernfalls wird der aktuelle Vorgang storniert ...", jLabel.left); JLabel statusLabel = new JLabel ("", Jlabel.Center); public void init () {Frame.SetLayout (new FlowLayout ()); Frame.SetResizable (falsch); tiplabel.setfont (neue Schriftart ("Serif", font.plain, 14)); contentLabel.setFont (neue Schriftart ("Serif", font.plain, 14)); statusLabel.setfont (neue Schriftart ("Serif", font.plain, 14)); JPanel Panel = new Jpanel (); // fr5.setBorder (neuer Titel ("BoxLayout - y")); panel.setLayout (neuer BoxLayout (Panel, boxLayout.y_axis)); Panel.Add (Tiplabel); panel.add (box.createverticalstrut (2)); panel.Add (contentLabel); panel.Add (box.createverticalstrut (7)); panel.add (bar); // panel.add (box.createverticalglue ()); panel.add (box.createverticalstrut (2)); panel.Add (StatusLabel); Frame.Add (Panel, 0); endgültig simuledTarget target = new SimuledTarget (1000); // eine zeitaufwändige Aufgabe ausführen, indem ein Thread-Thread-Thread-Thread gestartet wird = neuer Thread (Ziel); Thread.Start (); // Setzen Sie den Prozentsatz der Zeichnenabschluss in der Progress -Bar -Bar. // bar.setPreferredsize (neue Dimension (100, 18)); // Setzen Sie die maximalen und minimalen Werte der Fortschrittsleiste, bar.setminimum (0); // Verwenden Sie die Gesamtaufgabe als Maximalwert des Progress -Balks. Final Timer Timer = New Timer (300, new ActionListener () {public void actionPerformed (actionEvent e) {// den Wert des Fortschrittsbalkenbalkens mit der aktuellen Abschlussbetrag des Task -Balks -Balkens festlegen. }}}); Timer.Start (); Frame.SetLocationRelativeto (NULL); Frame.SetDefaultCloseOperation (jframe.dispon_on_close); // Frame.SetDefaultCloseOperation (jframe.exit_on_close); Frame.Addwindowlistener (neuer Fensteradapter () {@Override public void WindowsClosing (windowEvent e) {thread.interrupt (); Timer.Stop (); // System exit system.exit (0);}}); // Dieser Code legt die Fenstergröße gemäß den platzierten Komponenten so fest, dass er alle von Ihnen platzierten Komponenten berücksichtigt kann. Pack (). Frame.SetVisible (True); } public static void main (String [] args) {new TestJProgressBar (). init (); }} // Simulieren Sie eine zeitaufwändige Aufgabenklasse SimuledTarget Implements Runnable {// Die aktuelle Abschlussbetrag der Aufgabe private volatile intstrom; // Gesamtaufgabenvolumen privater Int -Betrag; public simuledTarget (intmenge) {current = 0; this.amount = Menge; } public int getAmount () {Rückgabebetrag; } public int getCurrent () {Return Current; } // Die Auslaufmethode repräsentiert den Prozess der kontinuierlichen Erfüllung von Aufgaben public void run () {while (aktuell <Menge) {try {thread.sleep (20); } catch (InterruptedException e) {} current ++; }} public String getSpercent () {return string.format ("%. 1f", 100.0 * Strom / Menge) + "%"; }}Auslaufergebnisse:
Für weitere Informationen zu Java -Algorithmen können Leser, die an dieser Website interessiert sind, die Themen "Java -Datenstruktur und Algorithmus -Tutorial", "Zusammenfassung der Java -Operation DOM -Knoten -Tipps", "Zusammenfassung der Java -Datei- und Verzeichnisoperationstipps" und "Zusammenfassung der Java -Cache -Operation Tipps" anzeigen
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.