15.14 Der Fortschrittsbalken JProgressBar
Mit der Komponente für einen Fortschrittsbalken (auch Verlaufsbalken genannt) lassen sich Anzeigen visualisieren, die das Vorankommen (den Status) einer Anwendung beschreiben. Ein Fortschrittsbalken, der unter dem AWT keine Entsprechung hat, lässt sich mit mehreren Konstruktoren erzeugen. Der Standard-Konstruktor erzeugt einen horizontalen Fortschrittsbalken. Es existieren zusätzliche Konstruktoren für die Orientierung JProgressBar.HORIZONTAL und JProgressBar.VERTICAL und ein eingestelltes Maximum und Minimum. Nachträglich lassen sich diese Eigenschaften jedoch noch mit setOrientation(int), setMinimum(int) und setMaximum(int) ändern.
Hier klicken, um das Bild zu Vergrößern
Abbildung 15.12 Anzeige eines Fortschrittsbalkens
Listing 15.19 JProgressBarDemo.java
import javax.swing.*;
public class JProgressBarDemo
{
public static void main( String args[] )
{
JFrame frame = new JFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
final int max = 10;
final JProgressBar bar = new JProgressBar( 0, max );
frame.getContentPane().add( bar );
frame.pack();
frame.show();
// Anzeige in Veränderung
for ( int i = 1; i <= max; i++ )
{
try { Thread.sleep( 1500 ); } catch ( InterruptedException e ) { }
final int j = i;
SwingUtilities.invokeLater( new Runnable() {
public void run() { bar.setValue( j ); }
} );
}
}
}
Die Methode invokeLater() erzeugt ein Ereignis, welches in die Ereigniswarteschlage eingefügt wird. Wird das Ereignis bearbeitet, wird Programmcode ausgeführt. Es ist wichtig, Veränderungen an Swing-Komponenten immer nur über den AWT-Thread durchzuführen und nicht über einen anderen Thread, wie den Main-Thread. Wir werden später noch ausführlicher über invokeLater() sprechen.
|