Jetzt lerne ich Java 6

Die AWT-Komponenten

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Unser leeres Fenster aus dem vorigen Beispiel wird in dieser Lektion mit verschiedenen AWT-Komponenten bevölkert. Lernen Sie, Labels, Buttons und Frames zu erstellen.
26:07

Transkript

Um uns in diesen Lektionen die einzelnen AWT-Komponenten anschauen zu können, brauchen wir wieder einen Grundgerüst für eine graphische Anwendung. Diese werden wir schnell zusammen klicken. Wir stellen uns eine neue Klasse, achten auf, dass wir eine „main“-Methode haben, und nennen das Ganze einfach „AWT_collection“. Im nächsten Schritt brauchen wir die AWT-Klassen, also „import java.awt.*“ und leiten unser ganzes Programm, damit es ein graphisches Programm wird vom Frame ab. Im nächsten Schritt brauchen wir einen Konstruktor von unserer Klasse, also „AWT_collection“ und erwarten wieder ein String für einen Titel. Der Konstruktor hält ein Klasse-Frame auf, da gibt man direkt den Titel. Ok, das war es so weit. Und jetzt müssen wir natürlich eine Instanz dazu bekommen, also … eine neue AWT_collection nennen wir einfach „frame“, das ist eine neue AWT_collection, weil es so toll war, soll das auf den Titel warten. So das Ganze sichtbar wird, packen wir das Ganze zusammen, also „frame“ Punkt „pack“, und dann wollen wir das Ganze natürlich sichbar haben: „setVisible“, „true“, damit sollte das gegessen sein… Kann man direkt testen. Starten wir das Ganze direkt als Application. Und wir haben ein leeres Frame. Im nächsten Schritt können wir uns um die einzelnen Komponenten kümmern. Dabei werde ich noch einige Komponenten eingehen, ganz klar es gibt mehr Methoden, mehr Eigenschaften, viel mehr Wissen, was Sie über diese Komponenten ansammeln können. Wir können auf dieser CD leider keine gute Referenz ersetzen, noch Bücher sind meist unvollständig. Ich lege Ihnen die Java-Dokumentation ans Herz, die Sie sich bereits heruntergeladen haben. Hier finden Sie wirklich alles, was Sie benötigen: in der Rubrik java.awt und später bei Swing logischerweise dann ebenfalls. Die erste Komponente, die wir uns jetzt näher anschauen wollen ist ist das so genannte Label. Ein Label ist ein typisches Beschriftungesfeld, das für das Aufbringen von Beschriftungen z.B. für Felder verwendet wird. Innerhalb eines Labels kann der Text links, rechts oder mittig angeordnet sein. Wir schauen uns in der Dokumentation, was hier zum Label steht. Das Label ist eine Klasse unter AWT, jetzt müssen wir nach unten scrollen und finden hier alphabetisch bei „L“ das Label. Hier sehen Sie wie das Ganze aussieht. Und hier sehen Sie die verschiedenen Constructoren. Bei den Methoden sieht man, dass es gar nicht so viel gibt, grundsätzlich die Methoden sind bei allen Komponenten einfach durch die Vererbung sehr ähnlich. Daher sollten Sie sich die Methoden einfach mal durchlesen, z.B. „getText“ gibt mir den Text mit dem das Label beschriftet ist zurück. Ich kann das Alignment oder die Ausrichtung später noch ändern, oder auch den Text natürlich verändern. Verwenden wir so ein Label doch einfach mal. Wir nennen nun das Ganze „label1“. Wir müssen jetzt entscheiden, welchen Constructor wir verwenden. Da wir einem Label sofort eine Beschriftung eintragen wollen, sagen wir einfach „Hallo Benutzer!“. Wenn Sie wollen, können Sie direkt beim Constructor, das sehen Sie hier bei der Dokumentation, direkt das Alignment noch setzen - die Ausrichtung links, rechts, Mitte. Sie sehen hier, das wäre eigentlich ein Integer-Wert. Und damit man nicht jedes Mal überlegen muss, was jetzt 0, was 1, was 2 sind, wurde netterweise hier oben bei „fields“, bei Eigenschaften, bei Label-Klasse direkt hier Konstanten vorbelegt: „center“, „left“, und „right“. D.h. wir müssen da nicht unbedingt Integer-Zahlen übergeben, wir verwenden ja einfach diese Konstanten. Somit übergeben wir jetzt Label, Punkt und z.B. center, Konstanten sieht man daran, dass Sie gross beschrieben sind. Das ist eine gute Konvention, dann weis man direkt, das sind Konstanten, die vordefiniert worden sind. Damit haben wir uns also ein Label geschaffen, und damit das Label sichtbar wird, müssen wir das natürlich unserem Fenster hinzufügen. Da werde ich jetzt einiges an unseren Komponenten machen, da wäre es ganz gut, ein Layoutmanager zu definieren, der das Ganze uns dann automatisch packt. „this.setLayout“ und dazu nehmen wir ein Flow-Layot, d.h. alles kommt neben einander so lange, bis das Fenster zu Ende ist, und danach geht unter drunter weiter. Jetzt müssen wir das Label noch ins Leben rufen, dafür benutzen wir die „add“-Methode und sagen – wir hätten gerne „label1“ hinzugefügt. Speichern wir das und führen das aus. Und schon haben wir unser erstes Label. Die nächste Komponente, die wir uns jetzt anschauen wollen ist der Button, also die Schaltfläche oder der Knopf. Und das ist auch so, das typische Element, womit man Mausaktionen des Benutzers abfangen kann. D.h. Knöpfe werden Sie fast immer brauchen. Die Klasse hierzu heisst „Button“. Wir legen bekannterweise ein „button“ an. Wenn Sie mehr darüber wissen wollen, dann gehen wir in die Doku, Overview, ins AWT zurück. Dann schauen wir uns einfach mal an, wie so ein Button aussieht. Vom Prinzip her, sehen Sie hier: Button kann gedrückt werden, es gibt drei Stadien, es gibt zwei Construktoren, einen leeren für einen leeren Button oder einen, bei dem ein String übergeben wird, mit einer Beschriftung. Was bei einem Button natürlich wichtig ist, sind natürlich die Listener, die man anhängen kann. Und viele Dinge kennen Sie hier bereits, wie z.B. getLabel, damit kann man Beschriftung des Buttons auslesen, dann wird es natürlich in Gegenzug ein setLabel geben, womit wir die Beschriftung des Buttons jederzeit ändern können. Gehen wir also wieder zum Button und schreiben einfach „Drück mich“ hinein. Und nachdem wir eine Instanz des Buttons haben, hängen wir ja diesen mit „add“ einfach in unseren Container. Und schon haben wir einen „Drück mich“ Button. Bei Eingabeformularen ist die so genannte Checkbox sehr beliebt. Auf Deutsch heißt das ganze Ding „Kontrollkästchen“ und Sie haben die Möglichkeit bei einem Kontrollkästchen, das entweder anzuklicken und damit zu setzen, dann ist es angekreuzt, oder das Kreuz auch wieder wegzunehmen. Sind mehrere Kontrollkästchen auf einer Seite, dann können diese normalerweise völlig unabhängig von einander angewählt werden. Wir sprechen in Java am besten von einer so genannten Checkbox, und so heißt auch die Klasse. Also legen wir uns eine Chekbox an. Auch hier schauen wir uns die Doku für Checkbox an. Sehen Sie hier, wie das Ganze unter Unix aussieht. Und eine Checkbox selber hat fünf Construktoren hier. Sie sehen hier, Sie können einer Checkbox selbst ein Label, also eine Beschriftung mitgeben, mit der die Box dann entsprechend auftaucht. Dann ist es wichtig, ob Sie voreingestellt eine Checkbox anhaken wollen oder nicht. D.h. wenn Sie das gerne steuern wollen, dann können Sie als boolischen Wert ein Status direkt mitgeben. Später werden wir noch sehen, dass Sie noch Checkboxen in Gruppen fassen können. Dann heißen Sie auf Deutsch nicht mehr Kontrollkästchen, sondern Optionsfelder oder auf Englisch Radiobuttons. Hier gibt es keine Unterscheidung beim AWT, sie sind beide Checkboxen. Wir werden uns also mit drei ersten Konstruktoren beschäftigen. Gehen wir also hin und Beschriften unsere Checkbox entsprechend: „Wähl mich“. Wenn Sie wollen, können wir sie direkt schon angewählt haben – wir setzen dann einfach einen boolischen Wert an. Und fügen das unserem Container wieder hinzu. Ich sehe gerade, es wäre ganz gut, das Ganze „check1“ zu nennen. Dann kann man ja ein Paar weitere Checkboxen einbauen. Und schon sehen Sie hier unsere Checkbox. Hier das ist das Label, also die Beschriftung, die wir hier im Konstruktor angegeben haben. Durch das „true“ an dieser Stelle ist das Ganze vorausgewählt. Und wir können natürlich jederzeit das An- und Abwählen. Natürlich bietet eine Checkbox später auch Methoden an, womit wir auslesen können, welchen Status im Moment hier diese Checkbox hat. Wir wollen uns nun mit den so genannten Radiobuttons, oder wie die auf Deutsch heißen – Optionsfelder, beschäftigen. Diese werden in html-Formularen meistens rund dargestellt. Diese Radiobuttons haben einfach das Verhalten, dass man einen Einzigen auswählen kann, innerhalb einer Gruppe. Typische Anwendung dafür ist z.B. Sie fragen bei einer Person das Geschlecht ab, entweder männlich oder weiblich. Java selbst kennt in AWT diese Radiobuttons nicht, für Java sind das weiter hin Checkboxen, aber diese Checkboxen werden dann zusammengefaßt zu der so genannten Checkboxgroup. Und innerhalb einer Group kann eine einzige Checkbox gesetzt sein. Wird eine neue ausgewählt, werden alle anderen abgewählt. Daher müssen wir zuerst eine Checkboxgroup generieren. Die können wir einfach „group“ nennen. Und damit haben wir eine Gruppe. Im nächsten Schritt müssen wir uns noch mal anschauen, wie die Checkboxen an sich aufgebaut sind. Und das sehen wir hier, ich bin wieder bei den Checkboxen in der Dokumentation, gehen wir noch mal in die Konstruktoren. Es gibt zwei Konstruktoren, die die Checkboxgroup berücksichtigen. D.h. durch das Hinzufügen einer Checkboxgroup hier in den Konstruktoraufruf wird entsprechend dann aus unserer Checkbox ein Radiobutton. Hierfür müssen wir das Label angeben, im nächsten Schritt den Anfangsstatus und danach den Gruppennamen. Ok, das können wir schon, das ist kein Problem. D.h. wir legen jetzt zwei Checkboxen an, es können natürlich auch mehr Checkboxen sein – kommt auf Ihre Anwendung an. Nennen wir es einfach „cbMale“, einfach männlich/weiblich, und jetzt müssen wir beim Initialisieren zunächst das Label angeben – männlich, anschließend den Status sagen wir „false“, d.h. es wird nichts vorausgewählt, es wäre dumm, männlich oder weiblich vorauszuwählen, und danach müssen wir den Gruppennamen eingeben, d.h. bei uns „group“. Das wäre es soweit. Ich kopiere mir das ganze einfach und sage hier, das ist „cbFemale“. Und entsprechend muss ich natürlich das Label auch ändern auf weiblich. Das ist auch nicht ausgewählt und gehört zu Gruppe. Das war es eigentlich schon soweit. Was Sie jetzt noch machen brauchen, ist die beiden Knöpfe, wie Sie es kennen, hinzuzufügen. Bitte keine Checkboxgroup hinzufügen, das geht nicht, da werden Sie eine Fehlermeldung bekommen, sondern Sie müssen die beiden Checkboxen hinzufügen. So weit sind wir. Schauen wir uns das Ganze an. Sie sehen, wir haben jetzt hier unsere beiden Radiobottons, die in Wirklichkeit Checkboxen sind, sie werden auch Rund dargestellt und dann können wir wirklich eines der Beiden auswählen. Und hier gibt es natürlich wieder Methoden, aus der Checkbox selbst festzustellen, ob sie gewählt oder nicht gewählt sind. Wir haben bis jetzt Komponenten verwendet. Ich möchte jetzt Ihnen noch einen weiteren Container vorstellen. Und zwar einen Container mit dem Namen „Panel“. Mit Hilfe von Panel ist es Ihnen möglich, innerhalb einer graphischen Oberfläche Bereiche noch einmal zu trennen, um darin z.B. geschachtelt irgendwelche Elemente abzulegen. Legen wir uns ein eigenes Panel an. Und das ist logischerweise eine eigene Klasse. Panel, wir nennen das Ding einfach „myPanel“. Und das geht relativ flott, ich sage einfach ien neues Panel. Ein Panel selbst ist wie gesagt ein Container, d.h. wenn ich jetzt hier in der Doku mal anschaue, wir müssen ins AWT… Wir haben hier das Panel, ist eine ganz simple Containerklasse wird hier gesagt, es gibt zwei Konstruktoren, einmal einen leeren – da wird ein default Layoutmanager verwendet. Ein Panel, klar, ist ein Container, genau so wie ein Frame ein Container ist, auch hier kann ich wieder auch Layoutmanager verwenden. D.h. Sie können auch innerhalb eines Panels natürlich auch einen anderen Layoutmanager benutzen, als ein übergeordnetes Fenster. Das bringt mir einiges an Flexibilität. Sie können diesen Layoutmanager auch direkt übergeben. Schauen wir uns das Ganze direkt praktisch hier an, mit unserem Panel, das wir hier jetzt geschaffen haben. Ich verwende jetzt einfach mal eine Methode, um nachträglich an meinem Panel was zu ändern. Wie Sie gesehen haben, ich kann auch hier direkt hineinschreiben, welchen Layoutmanager ich verwenden möchte, aber wir werden noch später mit Methoden arbeiten. MyPanel, Punkt, dann sehen Sie augenblicklich alle Methoden, die typischen set Methoden – setLayout, und dann sehen Sie, wir müssen einen Layoutmanager übergeben, wir machen einen anonymen, new Gridlayout. Den kennen Sie bereits, zwei Zeilen, eine Spalte. Und am Ende das Semikolon nicht vergessen. D.h. unser Panel hat jetzt einen eigenen Layoutmanager bekommen, und weil ich es so schön finde, setzen wir doch eine eigene Farbe. Auch ein Panel kann natürlich eigene Hintergrundfarbe haben, wird mit setBackground, genau wie mit anderen Elementen gesetzt. Also wir brauchen eine Farbe, auch Farbe ist ein Objekt vom Typ Color, und da tippen wir direkt schön sanftiges rot 255,0,0. Das ist RGB angegeben – Rotkanal 100%, also 255, an den anderen Kanälen nicht. Und schon haben wir ein wunderschön rotes Panel. Dieses Panel muss natürlich später noch hinzugefügt werden. Ich zeige Ihnen, wir wir unserem Panel zwei Elemente geben, z.B. zwei Knöpfe, und erst dann hinzufügen. Also, da brauchen wir zwei Knöpfe, die in dieses rote Panel hinein kommen. Nennen wir das Ganze einfach „button2“, beschriften wir den mit „Im Panel“, um den besser zu erkennen. Und dann machen wir noch einen „button3“, und der geht ja nachher in dieses rote Panel hinein, also „auch im Panel“. Das Panel selbst bringt, wie jeder Container, auch die Methode „add“ mit. Die haben wir bisher immer genutzt, um auf unsere Hauptklasse zu gehen – AWT_collection. Diesmal adden wir in unser Panel hinein. So können Sie dann das Ganze entsprechend schachteln. Also in dieses Panel hinein kommt der „button2“… und auch der „button3“. Nachdem wir jetzt unser Panel fertiggestellt haben, müssen wir auch natürlich noch sicherstellen, dass das Panel selbst unserer Fensterklasse zugeadded wird, also hinzugefügt wird. Also „myPanel“ wird hier an die Fensterklasse gehängt. Das ist auch so, der Sinn der Sache mit den Panels: Sie können hier oben in sich gekapseltes Panel machen, und dieses wie ein Baustein letztendlich wieder in andere Container hineinsetzen. Schauen wir uns das an. Hier ist also unser Panel, unsere beiden Knöpfe, wir sehen aber noch keinen roten Hintergrund. Nach dem wir schon so viele Elemente gesehen haben, wollen wir natürlich mit eines der meist gebrauchtesten Elemente kennenlernen, und zwar natürlich das Textfeld. Ein Textfeld kann dazu verwendet werden, entweder Benutzereingaben anzunehmen, dann lese ich einfach den neuen Textwert aus mit einer Get-Methode, oder ich kann auch für ein Textfeld Textausgaben generieren und wenn ich möchte sogar noch ein Schreibschutzt drauflegen, das keiner das verändern kann. Also als reines Ausgabefeld benutzen. Ein Textfeld hat die Klasse „TextField“. Ein neues TextField wollen wir jetzt generieren. Nennen wir das Ganze „text1“, new textfield, und… mittlerweile sind Sie es gewohnt, gehen wir in die Doku und schauen uns auch das wieder an. Hier ist also das TextField. Wichtig zu beachten ist, dass ein Textfeld immer nur einzeilig ist. Wenn Sie mehrzeilige Texte haben wollen, brauchen Sie die so genannte TextArea. Die werden wir auch noch kurz angehen. Und dann gehen wir einfach durch, dann sehen wir uns hier die Construktoren. Sie können, wenn Sie möchten, eine vorangegebene Anzahl an Spalten vergeben. Diese Spaltenanzahl begrenzt übrigens nicht die Anzahl der Zeichen, die angegeben werden können, sondern begrenzt nur die Breite des Textfeldes. Daher gibt es hier keine Längenkontrolle, die Sie vielleicht aus der html kennen. Wir können hier vielleicht den Constructor nutzen, das wir direkt etwas hineinschreiben in das Textfeld, und vielleicht einfach direkt vorgeben, wieviel Zeichen sich da sein sollen. D.h. also, wir schreiben was hinein, z.B. sehen wir traditionell „Hallo Welt“, und sagen wir hätten gerne ein Textfeld mit 15 Buchstaben Länge. Und wenn wir das gemacht haben, hängen wir dieses Textfeld entsprechend ein. Und schon haben wir hier unser Textfeld und was ich vorher gemeint habe, Sie sehen, Sie können hier beliebig viele Zeichen eintippen. Das macht gar nichts, dieser Columnwert beschränkt hier nur die Breite, wie breit dieses Feld im Layout ist. Die letzte Komponente, die ich in dieser Lektion angehen möchte, ist die Textarea. Textarea ist dafür gedacht, dass Sie ein Eingabefeld für Text haben, aber auch ein Anzeigefeld, das mehrere Zeilen abbilden kann. Also, schauen wir uns das ganze hier auch wieder zuerst in der Doku an. Gehen also in die Textarea. Das Ganze kann dann so aussehen. Sie sehen, es gibt auch Scrollbalken, die können automatisch erfolgen, wenn zu viel Text da ist, um angezeigt zu bekommen. Und das können Sie auch steuern. Schauen wir mal uns die Construktoren an. Sie können Texte direkt eingeben, Sie können direkt Anzahl der Reihen und der Spalten bestimmen. Jedoch auch hier, genau wie beim Textfeld ist keine Beschränkung der Textlänge an dieser Stelle vorgesehen, sondern es ist wirklich nur die Breite und die Größe, wie groß es im Layout auftaucht. Sie können auch über Eigenschaften bestimmen, was mit Scrollbalken passiert. Ob diese grundsätzlich sichtbar sein sollen oder nicht sichtbar, und ähnliche Dinge. Wollen Sie Texte später anfügen, müssen Sie auf die Methode „append“ zugreifen. Und hier wird dann der Text entsprechend in die Textarea gebracht. Gehen wir also jetzt in unser Programm und fügen eine Textarea hinzu. Fügen direkt schon ein Bißchen Text ein und sagen, wir hätten gern 15 auf 10. Dann fügen wir das entsprechend auch hier in unser Layout ein. Voila! Sie haben jetzt in diesen Lektionen so die wichtigsten Komponenten des AWT kennengelernt, und ich denke, mittlerweile sind Sie gerüstet, auch sich die Anderen entsprechen anzuschauen.

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)
Derzeit sind keine Feedbacks vorhanden...

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!