JXFrame

JXFrame1 ist von JFrame abgeleitet und kann einen solchen problemlos ersetzen. Sein Hauptanwendungsgebiet besteht meist in der Bereitstellung des Hauptfensters einer Anwendung. und stellt einige Erweiterungen, wie eine StatusBar, einen Idle-Status, einen Zugriffstimer und einige nützliche Standard-Verhaltensweisen bereit.

Um das Beispiel nicht zu unübersichtlich zu machen, wird sich hier auf die Darstellung der Einbindung einer Statusbar, einiger JLabel und einer JProgressBar beschränkt.
Direkt in der ersten Zeile von main() fällt der Konstruktoraufruf des Frames auf. Hier wird neben dem Frametitel ein boolscher Wert mitgegeben, der, falls true gesetzt, die Anwendung beim Schließen des Frames selbsttätig beendet. Die Standardeinstellung ist hier, wie bei JFrame auch, false.
In der Folge wird auf den Frame ein Label zentrisch gesetzt und die Statusbar vorbereitet: Nach der Objektbildung werden zwei JLabel und eine JProgressBar erzeugt. Die Komponenten werden auf die Statusbar gesetzt und in einem kleinen Thread die Fortschrittsanzeige der Progressbar simuliert.
Die Methode setStatusBar() integriert die Bar am unteren Rand des Frames.
Die Position eines JXFrame kann über die Enumeration JXFrame.StartPosition bequem reguliert werden. Hier kann zwischen einer manuellen Positionseinstellung (JXFrame.StartPosition.Manual), der Bildschirmmitte (JXFrame.StartPosition.CenterInScreen) oder der Mitte der Elternkomponente (JXFrame.StartPosition.CenterInParent ) gewählt werden.
Wie üblich muss zum Schluss die Größe des Frames bestimmt und dieser sichtbar gesetzt werden.

import javax.swing.JLabel;
import javax.swing.JProgressBar;

import org.jdesktop.swingx.JXFrame;
import org.jdesktop.swingx.JXStatusBar;

public class JXFrameBsp {

    public static void main(String[] args) {
        JXFrame frame = new JXFrame("JXFrame-Beispiel", true);
        frame.add(new JLabel("JXFrame-Beispiel", JLabel.CENTER));
        JXStatusBar statusBar = new JXStatusBar();
        JLabel progressLabel = new JLabel("Progress");
        final JLabel endLabel = new JLabel("");
        final JProgressBar pb = new JProgressBar(0, 100);
        progressLabel.setLabelFor(pb);
        statusBar.add(progressLabel);
        statusBar.add(pb);
        statusBar.add(endLabel);
        Thread t = new Thread(){
            public void run(){
                int i=0;
                while (i<=100){
                    pb.setValue(++i);
                    try {
                        Thread.sleep(30);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    if(pb.getMaximum() == i) endLabel.setText("feddisch!");
                }
            }
        };
        t.start();
        frame.setStatusBar(statusBar);
        frame.setStartPosition(JXFrame.StartPosition.CenterInScreen);
        frame.setSize(300, 300);
        frame.setVisible(true);
    }
}

JXFrame

1) JXFrame gehört zur SwingX-Bibliothek, die gesondert in den Classpath eingebunden werden muss. Für weitere Informationen siehe SwingX.