![]() |
![]() |
||
![]() |
Swing-Dialoge im Vista-Stil
Herkömmliche Swing-Dialoge weichen von denen in Windows(R) Vista(R) ab. Dieses Tutorial zeigt, wie Sie Vista-ähnliche Dialoge erstellen. |
||
![]() |
![]() |
Die Java Swing-Entwickler sind stets bemüht, die grafischen Oberflächen an die verschiedenen Betriebssysteme anzupassen. Ein mit Java erzeugtes Fenster soll unter Windows XP genauso aussehen, wie es dies bei anderen Programmen auch tut. Auf einem Mac soll ein Fenster, Button und jede Textbox genauso aussehen wie andere Programme auf dem Mac.
Bei Windows Vista liegen die Entwickler jedoch noch zurück: viele Elemente unterscheiden sich von den Standardkomponenten des Betriebssystems. So auch die Informationsdialoge, auch Message Boxen genannt.
In diesem Tutorial soll gezeigt werden, wie mit einfachen Mitteln eine eigene Klasse entworfen werden kann, welche die aus Vista® bekannten Dialoge nachbildet. Am Ende des Tutorials findet sich eine nützliche Klasse, die Sie für Ihre eigenen Projekte benutzen können.
Der Unterschied
![]() |
![]() |
Auf der linken Seite sehen Sie den Standard-Dialog, welcher Swing unter Vista erzeugt, wenn Sie die Methode JOptionPane.showMessageDialog(...) verwenden. Auf der rechten Seite sehen Sie hingegen ein eigens erzeugtes Dialogfenster, welches dem Aussehen einer Dialogbox in Windows Vista erheblich ähnlicher sieht.
Die Herangehensweise
Wir lösen uns von der Standardlösung und erstellen uns eine eigene Klasse zur Darstellung von Dialogen. Dazu orientieren wir uns an den Microsoft®-Richtlinien zur Erstellung von MessageBoxen, wie sie im Windows Vista Developer Center festgelegt sind [LINK].
Zuerst schauen wir uns daher die vorgegebenen Dialoge an und gestalten unsere Dialogfenster gemäß den Vorgaben. Als Container verwenden wir einen JDialog. Dieser hat gegenüber dem JWindow oder JFrame den Vorteil, dass er sich mittels Methodenaufruf modal einstellen lässt. Das bedeutet, dass die Programmausführung gestoppt wird und erst dann fortgesetzt, wenn der Benutzer den Dialog mittels Knopfdruck schließt.
Die benötigten Elemente umfassen ein ImageIcon zur Darstellung der kleinen Grafik, eine JTextArea für den Nachrichtentext und ein weiteres JLabel für den blauen Überschriftstext. Ein ActionListener horcht auf dem Button und schließt das Dialogfenster bei einem Klick darauf.
In den Zeilen 10-16 werden Konstanten für die Schriftarten und die Farben vereinbart. In den Zeilen 30 bis 39 wird die Grafik geladen. Sie finden die benötigten Grafiken am Ende des Tutorials zum Download. Von Zeile 42 bis 44 wird der blaue Kurztext hinzugefügt. Der Kurztext wird zusammen mit der Grafik auf ein JPanel gelegt (Zeile 47-51).
import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import java.io.IOException; { /** Schriftarten für die Texte */ /** Farben für den Hintergrund und den Titeltext */ /** * Zeigt ein Dialogfenster im Windows Vista-Stil an * * @param title der Titel des Dialogfensters * @param labelText der blaue Informationstext * @param messageText der ausführliche Text */ super(); // Icon für die Grafik BufferedImage icon = null; try{ icon = ImageIO.read(getClass().getResource("images/error.png")); } e.printStackTrace(); } // JLabel für den kurzen blauen Informationstext titleText.setForeground(titleTextColor); titleText.setFont(titleTextFont); // JPanel für die Grafik und die Kurzbeschreibung headerPanel.setBackground(background); headerPanel.add(iconLabel); headerPanel.add(titleText); // JTextArea für die ausführliche Fehlerbeschreibung messages.setLineWrap(true); messages.setWrapStyleWord(true); messages.setFont(messageTextFont); messages.setEditable(false); // JPanel für den Informationstext mainPanel.setBackground(background); messages.setBackground(background); // ein leerer Rahmen dient dem Einhalten eines Abstandes zum Rand // JPanel für den Button closeButt.setText("Schließen"); // Dialog beim Klick auf "Schließen" verstecken setVisible(false); } }); buttonPanel.add(closeButt); // die JPanels werden dem Dialogfenster hinzugefügt // Dialogweite Einstellungen vornehmen setTitle(title); setIconImage(null); setModal(true); setAlwaysOnTop(true); pack(); setResizable(false); setLocationRelativeTo(null); setDefaultCloseOperation(DISPOSE_ON_CLOSE); // Dialogfenster anzeigen setVisible(true); } }
Danach wird der ausführliche Informationstext in einen Textbereich gegeben und in ein weiteres JPanel gelegt (Z. 54-67).
Dann wird der Button im unteren Teil des Dialogs hinzugefügt (Z. 70-80). Schließlich werden einige dialogweite Einstellungen vorgenommen und das Dialogfenster angezeigt. Ein Aufruf des Dialogs erfolgt nun beispielsweise mit
new VistaDialog("Mein Titel", "Dies ist aber ungewöhnlich...", "Es ist ein sehr schlimmer Fehler unterlaufen!");
Fertig! Sie können nun Dialoge im Vista Design für Ihre Programme einsetzen. Im Anhang an dieses Tutorial finden Sie eine Klasse, welche Ihnen ebenfalls die Anzeige von reinen Informationsmeldungen oder auch Ja/Nein-Abfragen ermöglicht.| von Manuel Kaess am 13.02.2008 |
0 Kommentare
|
|
|||






There is also an English version of this page.



