Aufgabe 1: GUI erstellen
In dieser Übung werden wir als erste grafische Benutzeroberfläche die GUI eines Audioplayers entwickeln. Der Player ist ziemlich einfach aufgebaut: Er besteht nur aus einem Ein/Aus-Schalter ("ON"), einigen Radio Buttons für die Auswahl von Audiodateien (SF1-3: Sound File 1-3) und einem Textfeld ("OFF"). Später wird dieses Textfeld Informationen zur gegenwärtig abgespielten Audiodatei anzeigen und ob der Player eingeschaltet ist:
Die grafische Benutzeroberfläche ist ein für sich allein funktionierender, autonomer Bestandteil des Programms. Die eigentliche Verbindung zum Programmcode, der durch die Bedienelemente gesteuert werden soll, erfolgt dann in der nächsten Aufgabe mit Hilfe von Ereignissen.
-
Öffnen Sie zunächst eine neue Sketch-Datei mit dem Namen
Audioplayerund definieren Sie in dieser zuerst ein Textfeld. Hierfür ist es erforderlich, die AWT- und Swing-Packages (Bibliotheken) zu importieren:import java.awt.*; import java.awt.event.*; import javax.swing.*;
Der Stern besagt hier, dass alle Klassen aus den Packages benutzbar sein sollen.
Legen Sie in der Datei eine neue Klasse mit dem Namen
AudioplayerGuian, die von der KlasseJFrameerbt. Diese stellt die Grundlage für die zu erstellende Bedienoberfläche dar.
GUI-Komponenten werden wie andere Objekte auch erzeugt, d. h. zuerst wird eine Referenzvariable deklariert. Diese bekommt nachfolgend ein mitnewgeneriertes Objekt der gewünschten Klasse zugewiesen. Dies kann auch direkt im Klassenrumpf geschehen, ohne dass ein Konstruktor dafür erforderlich wäre. Erzeugen Sie auf diese Weise einJTextField-Objekt:
public class AudioplayerGui extends JFrame{ JTextField t = new JTextField(50); // hier weitere Anweisungen für die übrigen GUI-Elemente einfügen }Die Dokumentation der grafischen Komponenten finden Sie in der Java 8.0 Documentation.
Schauen Sie sich beispielhaft die Dokumentation des
JTextFieldsunter dem Eintrag "All Classes" an. Wofür steht die50in der obigen Instanzierung?Erweitern Sie den obigen Codeabschnitt um eine Check Box mit der Beschriftung "ON", die später als Ein-/Ausschalter des Audioplayers fungieren wird, und drei Radio Buttons für die Auswahl des gewünschten Sound Files ("SF1-3"). Diese sollen wie bei alten Kofferradios funktionieren, d. h. es darf immer nur ein Knopf zur Zeit selektiert sein.
-
Fügen Sie danach einen Konstruktor
AudioplayerGUI()in ihre Klasse ein. Wir benötigen diesen, weil das Generieren der Komponenten alleine nicht ausreicht, um diese auf dem Bildschirm darzustellen. Damit die Komponenten auf dem Bildschirm erscheinen, müssen sie zuerst in einen Container gelegt werden. (Was ist der Container in diesem Zusammenhang?)
Der Konstruktor wird automatisch aufgerufen, wenn die Anwendung gestartet wird. Er ist also der geeignete Ort, um die GUI-Komponenten auf den Bildschirm zu bringen.Tun Sie dies durch Einfügen von
add()-Anweisungen in den Konstruktor, in der Weise, dass das Textfeld im Norden und die Check Box im Süden und die Radio Buttons dazwischen platziert werden. -
Initialisieren Sie das Textfeld mit dem oben im Bild angegebenen Text. Starten Sie danach die Anwendung und probieren Sie, Text in das Textfeld einzugeben. Wenn dies möglich ist, so schalten Sie dies durch Aufruf von
t.setEditable(false);im Konstruktor ab. Ersetzen Sie dabeitdurch den Namen ihres Textfeldobjekts.
Legen Sie auch einen Font ihrer Wahl fest, z. B."Arial", BOLD, 14. Der entsprechende Methodenaufruf hierfür ist
t.setFont(new Font("Arial",Font.BOLD,14));In entsprechender Weise können Sie auch den Font für z. B. ihre Radio Buttons anpassen.
Eine Liste der auf Ihrem System installierten Fonts können Sie sich mit dem folgenden Code in der Processing-Konsole anzeigen lassen:GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String fonts[] = ge.getAvailableFontFamilyNames(); // Getting the font family names for (int i=0; i < fonts.length; i++) { System.out.print(fonts[i] + ", "); }