Jetzt lerne ich Java 6

Workshop AWT-Mini-Rechner

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Um das Wissen über grafische Oberflächen, AWT-Komponenten und Event-Handling etwas zu festigen, programmieren wir in diesem Workshop einen einfachen Rechner.
17:48

Transkript

An dieser Stelle wollen wir jetzt ein kleines Beispielprojekt machen. Es wird ein reines AWT-Beispiel und nennt sich Minirechner und in diesem Beispiel werden wir zuerst einmal eine Oberfläche im AWT aufbauen, anschließend dann entsprechend EventListener implementieren und diese dann natürlich mit entsprechenden Funktionen versehen. Abschließend werden wir dann noch einen kleinen Teil aus den Exceptions verwenden, um einfach Fehler abzufangen. Gut, um dieses Projekt hier zu beginnen, legen wir uns ein neues Java-Projekt an und nennen das AWT_MiniRechner. Achten darauf, dass die Quellfiles und die Output-Files in separaten Ordnern liegen, das ist für nachher, wenn wir die Anwendung weitergeben wollen, um einiges praktischer und im nächsten Schritt überlegen wir uns, wie das Programm von sich aus aufgebaut sein soll. Vom Prinzip her stelle ich mir eine Art kleinen Taschenrechner vor. Ich habe 2 Eingabefelder für 2 Zahlen und darunter habe ich Knöpfe für die 4 Operatoren, die es gibt: plus, minus, mal und geteilt. Je nachdem, welchen dieser 4 Knöpfe ich drücke, wird darunter einfach das Ergebnis entsprechend ausgegeben. Das ist nicht sonderlich komplex, aber zeigt doch ganz gut die Verwendung unseres aufgebauten Wissens. Anschließend sollten wir uns jetzt überlegen, wie wir von der Konzeption her vorgehen. Bis jetzt haben wir sehr häufig AWT-Klassen in sich selber letztendlich instanziiert. Ich möchte das jetzt hier gerne trennen, wir werden eine graphische Klasse aufbauen, wo die ganze Funktionalität für den Rechner drin ist, und dann von einem weiteren Programm letztendlich eine Instanz dieses Rechners instanziieren. Das heißt wir brauchen zwei Klassen, einmal sozusagen die Oberfläche, das nennen wir einfach Hauptfenster, diese Klasse, und später noch ein Hauptprogramm, das dann eben die Instanziierung vornimmt. Gehen wir jetzt mal hier auf Klasse generieren, nennen diese Klasse Hauptfenster, dann gehen wir ins Package und sollten jetzt auch korrekt einen Package-Namen vergeben. Ich mache das mal passend zu meiner Firma Ipartner, Sie können das natürlich jetzt so bauen, wie Sie das gerne wollen. Ich sage also de.ipartner.java und dann nennen wir das einfach das Projekt minicalc. So habe ich ein eigenes Package und ich werde jetzt alle Klassen, die hier dazugehören, einfach entsprechend in dieses Package hineinlegen. Wir brauchen für diese Klasse keine Main-Methode, denn wie gesagt von außen wird später diese Klasse instanziiert werden. Hier "Finish" klicken, haben wir jetzt hier das passende Paket und unsere Haupfensterklasse und können jetzt hiermit in Ruhe loslegen. Der erste Schritt ist jetzt das Festlegen der Instanzvariablen, die wir brauchen. Ich habe bereits in den einführenden Kapiteln jeweils gesagt: das ist ganz gut für unsere grafischen Elemente, für also die Referenzvariablen, die also auf diese graphischen Elemente zeigen, entsprechend Instanzvariablen anzugeben, denn auf diese können wir dann entsprechend aus den Listenern zugreifen. Diese setzen wir alle auf private, denn die haben außen innerhalb des Paketes sonst nichts verloren. Wir brauchen ein Panel für das Ganze, und zwar ein sogenanntes Eingabepanel. Dieses Eingabepanel wird später unsere 2 Textfelder, wo die Zahl 1 und 2 eingegeben wird, aufnehmen. Anschließend brauchen wir noch ein zweites Panel, und zwar das Operatorenpanel. Hier werden später die 4 Knöpfe für die 4 Flächenarten nebeneinander liegen. Und dann brauchen wir noch ein Ergebnispanel. Panels sind insoweit ganz praktisch an dieser Stelle, dass jedem Panel ein eigener Layout Manager zugewiesen werden kann. Da Panel natürlich aus dem Paket AWT stammt, müssen wir entsprechend über ein Import das Ganze importieren und da wir einige Klassen daraus brauchen, Importieren wir einfach entsprechend den Stern. Gut, dann gehen wir an die zweite Stelle und sagen jetzt okay, wir brauchen noch Textfelder. TextField und zwar für Zahl 1 und Zahl 2. Nennen wir die auch entsprechend so. Dann brauchen wir natürlich Buttons und zwar für die 4 Grundrechenarten und damit ich mir das besser merken kann: plus, minus, multi und divi. Das ist wieder ganz klar und das Ergebnis soll später ausgegeben werden, aber das soll keine ändern können, daher bietet sich an der Stelle ein Label an. Voilà, damit haben wir unsere Instanzvariablen und können jetzt natürlich mit dem Konstruktor weitermachen, der dann natürlich bei der Instanziierung des Hauptfensters aufgerufen wird, und damit wird dann unsere ganze grafische Oberfläche gebaut. Wir müssen von außen an unseren Konstruktor drankommen, daher sagt der Public. Wnn wir natürlich sagen okay, vom Prinzip her soll nur die Applikation die Möglichkeit haben, dieses Hauptfenster zu instanziieren, dann können wir das auch weglassen, dann dürfen halt nur die Programme auf den Konstruktor zugreifen, die innerhalb des Paketes hier liegen. Das ist also jetzt eine Konzeptfrage, ich setze ihn einfach auf public und gegebenenfalls kann man sich darüber ja noch Gedanken machen. Okay, der heißt Hauptfenster und hierdrin muss jetzt alles geschehen. Das Hauptfenster an sich, ganz klar, ist abgeleitet von einer Frame-Klasse und zwar hier oben, das heißt wir müssen jetzt schreiben OK, "extends Frame" und damit ist unser Hauptfenster schon ein richtiger AWT-Container und entsprechend können wir jetzt hier im Konstruktor mit "super" - und übergeben wir direkt einen Titel - ein Fenster ins Leben rufen. Im nächsten Schritt: wir werden später in diesem Container, der unser Fenster ausmacht, drei Panels platzieren und in den Panels, Sie erinnern sich, hier oben haben wir sie angelegt, werden wir dann die einzelnen Komponenten platzieren, aber diese Panels sollen übereinander angeordnet sein, also oben zuerst mal das Panel mit den zwei Eingabefeldern, darunter das Panel mit den 4 Knöpfen und darunter das Panel eben mit dem Label drin und daher bietet sich als Layout-Manager an der Stelle ein Grid Layout ganz gut an. Also setzen wir Layout-Manager, instanziieren uns ein GridLayout, schreibt man groß, und zwar eins mit vier Zeilen und einer Spalte. Okay, damit haben wir einen passenden Layout-Manager. Und jetzt können wir uns um die einzelnen Panels kümmern. Zuoberst steht ja unser Eingabepanel, wo später die 2 Textfelder draufkommen und daher formatieren wir es am besten direkt mal. Sonst wird das alles nachher sehr verwirrend. "Aufbau des Eingabepanels", das haben wir Eingabepanel genannt, das war hier oben. Das belegen wir jetzt mit einem neuen Panel. Und für dieses Eingabepanel brauchen wir ja auch einen eigenen Layout- Manager und zwar die beiden Textfelder sollen übereinander liegen. Das heißt da bietet sich auch wieder ein Grid Layout an, mit zwei Zeilen, einer Spalte, und damit wir ein bisschen Abstand zwischen die Zeilen bekommen, werden wir auch noch einen 10 x 10 Abstand setzen. also setLayout, new GridLayout, zwei Zeilen, eine Spalte und die Abstände 10,10. Sowas übrigens müssen Sie nicht alles auswendig können. Dafür gibt es die Java Doku, einfach nachschauen was für Konstruktorparameter entsprechen vorhanden sind für die einzelnen Layout-Manager, denn das gehört einfach zum Brot des Programmierers, einfach wissen, wo es steht, und entsprechend nachschauen. Gut, im nächsten Schritt brauchen wir unseren beiden Eingabefelder. Die haben wir Zahl 1 und Zahl 2 genannt, also neue Instanz von TextField, und die Textfelder sollen eine Beschriftung haben, das ist ein Label, schreiben wir daneben Zahl 1 und für Zahl 2 das Gleiche natürlich. Jetzt haben wir die Beiden. Jetzt müssen wir diese einem Container zuführen und wir benutzen als Container jetzt natürlich unser Eingabepanel. Ja, also nicht selbst ins Hauptfenster zufügen, sondern in das Panel hier und das Panel wird später dann in einem wie ein eigener Block in das Hauptfenster eingehängt. Also sagen wir jetzt hier Eingabepanel. Dann adden wir die Zahl 1 und in das Gleiche, adden wir an der Stelle auch die Zahl 2. Das heißt, die sitzen jetzt im Panel und damit ist das Panel an sich erstmal fertig. Und wir können uns dem nächsten Panel zuwenden. Das nächste Panel ist das Operatorenpanel, da sitzen nachher die 4 Knöpfe, nebeneinander plus, minus, mal, geteilt und wir fangen auch hier wieder mit einem Kommentar an. Und können das jetzt hier in Ruhe loslegen. Das Ganze nennt sich Operatorenpanel. Abgeleitet von Panel. und hier verwenden wir als Layout-Manager am besten ein FlowLayout, weil die Knöpfe ja schön nebeneinander platziert werden sollen. Gut, jetzt kommen natürlich unsere vier Knöpfe: plus = new Button und die beschriften wir direkt schön. Voilà, und wir haben unsere vier Knöpfe. Diese wiederum müssen in Ihren Container, und das ist eben das Operatorenpanel. Da ich jetzt ein bisschen faul bin, kopiere ich mir einfach mal diese Zeile hier, füge die einfach noch dreimal ein und ändere hier dann einfach passend den Namen. Damit haben wir das zweite Panel fertig und können uns jetzt noch um das Label kümmern. Also, Aufbau des Ergebnispanels. Neues Ergebnispanel, da brauchen wir keinen Layout-Manager, da wir nur eine einzige Komponente hineinplatzieren wollen. Am Anfang soll da "Bitte Wählen" drinstehen. Später wird da dann entsprechend das Ergebnis drinstehen. Und das Ganze müssen wir natürlich auch noch zuweisen. Ergebnispanel, add, dann kommt das Ergebnis rein. So, nachdem wir jetzt unsere ganzen Panels haben, bleibt uns nichts anderes über, als diese drei Panels uns zu schnappen und in den Hauptcontainer zu setzen. Da nehmen wir jetzt "this", weil es um unseren Container selbst geht, setzen als allererstes das Eingabepanel, danach das Operatorenpanel und zuletzt entsprechend dann das Ergebnispanel. Okay. So weit, so gut bis zu dieser Stelle. Jetzt wäre es eigentlich ganz schön, wenn wir die Möglichkeit hätten, uns das Ganze auch mal anzuschauen, daher sollten wir uns jetzt kurzerhand einfach mal um das Haptprogramm kümmern, damit wir endlich mal das Ergebnis unserer Arbeit bisher sehen. Hierfür legen wir uns eine neue Klasse an, für das Hauptprogramm. Achten darauf, dass wir hier wirklich das Paket auch gewählt haben, in dem wir die Klasse anlegen wollen. Zur Kontrolle hier oben in Package muss entsprechend das Paket auch drinstehen. Sonst haben wir nämlich das Problem, dass wir später nicht auf das Hauptfenster einfach so zugreifen können. Okay, nennen wir das Ganze einfach mal Minirechner. Achten darauf, dass hier wirklich eine Main-Methode auch angelegt wird. Dann sparen wir uns das gleich. Jetzt können wir hier einfach hingehen und eine neue Instanz von Hauptfenster ins Leben rufen. Jetzt können wir das Ding "Fenster" nennen, wir können aber auch das Ganze App, für Kurzform von Applikation nennen. Da gibt es verschiedene Möglichkeiten, wie das Leute gerne machen. Ich bleibe einfach beim Fenster und damit holen wir uns eine Instanz von Hauptfenster. Im nächsten Schritt können wir Fenster einfach packen und ganz wichtig ist dann mit setVisible endlich auf dem Bildschirm zaubern. Das war es auch schon in unserem riesen Hauptprogramm, natürlich wollen wir ein true übergeben, damit das wirklich auch sichtbar ist. Gut, das war es eigentlich schon und jetzt müssen wir halt beim Kompilieren darauf achten, dass hier Minirechner entsprechend das Hauptprogramm ist. Das heißt wir gehen jetzt hier auf Run As Java Application und hier sehen wir jetzt unseren Minirechner. Das ist noch nicht so sonderlich schön, können Sie natürlich noch ein bisschen schöner machen. Aber Sie sehen, die Layout-Manager arbeiten auch schon und für unseren ersten Start ist das doch ganz gut. Hier werden wir jetzt später unsere Funktionalitäten drauflegen, hier sollen die Leute ihre Zahlen eingeben. Und da kommt dann entsprechend das Ergebnis raus. Natürlich schließen können wir noch nicht, denn wir haben noch keine Listener für Events hineingepackt in unser Hauptfenster. Und das wäre doch ein gutes Thema, um damit jetzt weiter zu machen.

Jetzt lerne ich Java 6

Steigen Sie ein in die Programmierung mit Java 6, lernen Sie die Grundlagen kennen und unternehmen Sie anschließend Ihre ersten Schritte in der objektorientierten Programmierung.

12 Std. 27 min (98 Videos)
Super!
Anonym

Die Rezension kommt wahrscheinlich einige Jahre zu spät, trotzdem fühle ich mich gerade gezwungen, ein positives Feedback zu hinterlassen: Ich habe mir soeben Ihr AWT Tutorial angesehen. Beim Dozenten habe ich mich stundenlang vorne und hinten nicht ausgekannt, jedoch bei Ihnen auf Anhieb alles Verstanden. Danke dafür! Es gibt leider sehr wenige Bücher, die AWT noch ausreichend behandeln, doch warum Bücher lesen, wenn per Video dasselbe auf verständlicherer Basis vermittelt wird? Ein Kritikpunkt bleibt: das "duubel" (double) macht mir noch immer Kopfschmerzen :P

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!