Erstellen eine Java-Fortschrittsanzeige mit der JProgressBar-Klasse
Dieses Tutorial soll verstehen, wie wir mit der Klasse JProgressBar
in der SWING-Anwendung einen Java-Fortschrittsbalken erstellen können. Wir werden auch lernen, wie Zahlen und Text angezeigt werden, wenn man berücksichtigt, bis zu welchem Füllstand der Fortschrittsbalken gefüllt ist.
Verwenden Sie die Klasse JProgressBar
, um einen Java-Fortschrittsbalken zu erstellen
Angenommen, wir laden eine Datei hoch/herunter und die Operation wird im Hintergrund ausgeführt, ohne uns zu benachrichtigen. Wir können stundenlang sitzen und die Maschine den Upload/Download durchführen lassen.
Hier ist der Fortschrittsbalken hilfreich und zeigt an, wie viel Arbeit erledigt wurde. Beginnen Sie mit dem horizontalen Fortschrittsbalken mit der Klasse JProgressBar
, einem Widget, das einen Fortschrittsbalken für zeitaufwändige Aufgaben anzeigt.
Beispielcode:
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());
}
}
}
}
Ausgabe:
Innerhalb der main
-Funktion weisen wir der MAXIMUM
-Variable 100
zu, die den Abschluss der Aufgabe anzeigt, wenn diese Zahl auf dem Fortschrittsbalken sichtbar ist.
Der Konstruktor JFrame
wird erstellt, um ein Fenster auf dem Computerbildschirm anzuzeigen, und es ist ein Basisfenster für andere Komponenten, auf die sie sich verlassen, beispielsweise Bedienfelder, Schaltflächen, Menüleiste usw.
Als nächstes erstellen wir eine Konstruktion der Klasse JProgressBar
, um einen horizontalen Fortschrittsbalken zu erstellen. Die Methoden setMinimum()
und setMaximum()
nehmen eine ganze Zahl als Argument, das verwendet wird, um den minimalen und maximalen Wert festzulegen, der im Datenmodell des Fortschrittsbalkens gespeichert ist.
Die Methode setStringPainted()
nimmt einen booleschen Wert, um zu entscheiden, ob der Fortschrittsbalken einen Fortschrittsstring darstellen soll oder nicht. Der String wird gerendert, wenn er true
ist; ansonsten nicht.
Die Methode setLayout()
ermöglicht es uns, das Layout des Containers als FlowLayout
für dieses Tutorial festzulegen. Das FlowLayout
fügt die Elemente in einem sequentiellen Fluss (ein Element nach dem anderen in einer Zeile) in den Container ein und verschiebt das Element in die nächste Zeile, wenn es nicht auf die aktuelle Zeile passt.
Für den Moment haben wir ein Fenster erstellt, das Layout des Containers festgelegt und einen horizontalen Balken mit minimalem und maximalem Wert erstellt, und es ist Zeit, den Fortschrittsbalken zum Container hinzuzufügen.
Wir verwenden die Methode getContentPane()
, die verwendet wird, um auf die Ebene des Inhaltsbereichs zuzugreifen und uns das Hinzufügen des Objekts zu ihr zu ermöglichen.
Wenn der Benutzer auf die Kreuzschaltfläche (X
) klickt, wird das Ereignis zum Schließen des Fensters ausgelöst, wodurch die Funktion setDefaultCloseOperation()
die Anwendung schließen kann. setSize()
wird verwendet, um die width
und height
des Fensters einzustellen, während setvisible()
das Fenster den Benutzern anzeigt, wenn es true
wird.
Schließlich aktualisieren die for
-Schleifen den Fortschrittsbalken, der bei 0 % beginnt und bis 100 % reicht. Der nächste Beispielcode zeigt anstelle von Zahlen Text auf dem Fortschrittsbalken an.
Beispielcode:
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);
}
}
}
Ausgabe::