Wie kann man eine kontinuierlich laufende Aktivitätsanzeige erzeugen, die in einem eigenen Fenster erscheint?
In der Beispielklasse wird im Konstruktor nach Erzeugen eines leeren JFrame
die
Methode createProgressBarWindow()
aufgerufen. In
ihr werden zunächst je ein Objekt eines JWindow
und einer JProgressBar
erzeugt. Nach der
Dimensionierung der JProgressBar
wird deren Status
durch die Methode setIndeterminate(true)
auf
unbestimmt (indeterminate) gesetzt. Dies bedeutet, das
diese Anzeige prinzipiell bis in alle Ewigkeit laufen kann und
keinen wirklichen Fortschritt anzeigt.
Die Progressbar
wird dem Fenster hinzugefügt, die Größe des
Fensters gesetzt und schließlich, bevor es sichtbar
gemacht wird, zentriert und auf eine hohe Z-Ebene gesetzt, damit
es immer als oberstes Fenster erscheint.
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.JWindow;
import javax.swing.SwingUtilities;
public class InditerminateProgressBar {
public InditerminateProgressBar() {
initFrame();
createProgressBarWindow();
}
private void initFrame() {
JFrame frame = new JFrame("Progress Bar");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private void createProgressBarWindow() {
JProgressBar pb = new JProgressBar();
pb.setPreferredSize(new Dimension(200, pb.getPreferredSize().height - 4));
pb.setIndeterminate(true);
JWindow win = new JWindow();
win.add(pb, BorderLayout.CENTER);
win.setSize(pb.getPreferredSize());
win.setAlwaysOnTop(true);
win.setLocationRelativeTo(null);
win.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new InditerminateProgressBar());
}
}
Wozu dient der leere JFrame
?
Er ist hier prinzipiell überflüssig und dient nur
dazu, das Programm über den fenstereigenen
Schließen-Button bequem zu beenden.
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.