So im letzten Abschnitt des heutigen PowerPoint-Teils möchte ich Ihnen,
möchte ich auf Swing und Layout-Manager zu sprechen kommen,
doch vorher nochmal eine Zusammenfassung,
das Zusammenwirken dieser Werkzeugklassen mit Aktionen und Darstellungen und wie hängt das mit den Materialien zusammen,
das haben wir auf Folie 32 und das ist die Antwort auf die Frage 7,
wie wirkt denn das zusammen?
Sie erinnern sich, hoffentlich haben Sie das vor Ihrem geistigen Auge,
Werkzeug und das Werkzeugbearbeitersmaterial, das Werkzeug besteht aus zwei Klassen.
User-Interface-Klasse und Werkzeugklasse. Und die Werkzeugklasse, also wie hängen
diese ganzen zusammen? Das Event Listner-Konzept, stell dieses Zusammenwirken dar.
Also die User-Interface-Klasse hat diese Elemente, die sie erzeugt.
Und die stellt sie zur Verfügung ihrer Schnittstelle, die so Interface-Klasse,
ist eine interne Klasse, die ist nicht nach außen sichtbar.
Sie ist nach außen nur sichtbar als Teil des Werkzeugs.
So, die Werkzeugklasse erzeugt dafür Listner, die dann dieses
Event und erwähnt wir es noch Mechanismus bedienen, vollführen.
Und der sorgt dafür, dass sie passende Aktionen ausgeführt wird. Das ist der Platz,
wo man als Programmierer seine Aktionen hinschreibt,
die zu einem bestimmten Ereignis gehören und damit das funktioniert,
während die Lizner an diesen Widgets registriert, User, Interfacewitches,
das sind diese Elemente, die letztlich die Träger sind,
wo die Events herkommen vom Betriebssystem in Zusammenwuchen mit dem Betriebssystem.
So, die Werkzeugklasse selber übergibt dann die Anzugzeit, die Materialien,
oder Fachwerte an das User-Interface, damit die entsprechend dargestellt werden.
Ja, das Darstellen war ja auch nur Aspekt,
nicht nur das Bearbeiten. Und das wäre zu holt die Werkzeugklasse,
sich das Witched setzt die Informationen ein und stellt die dar
und gegebenenfalls wären die noch in irgendeiner Form formatiert.
Ja, die Werkzeugklasse bestimmt also, was wird dargestellt und gleichzeitig bestimmt sie,
wie es dargestört, wie das formatiert wird.
Soweit nochmal den Zusammenhang und jetzt dieses über das Wie des Darstellens
dazu brauchen wir Ein Layout. Ja, typischerweise hat man
eine Vorstellung, wie soll das angeordnet sein?
Da gibt es noch eine ganze Reihe von Kriterien,
wie sind solche Darstellungen für den Menschen gut nachvollziehbar, dass das Erwartungskonformes erwartet.
Man erwartet, okay, irgendwie unten rechts,
man erwartet irgendwo eine Statusinformation oben oder links oder sowas.
Man erwartet bestimmte Farben und überhaupt diese Anordnung,
vor allen Dingen darum wollen wir uns jetzt kümmern,
die Anordnung sind mit in Yava Swing, mit Layout Managern möglich.
Die Ordner Die werden angeordnet, ja, und dabei ist es möglich,
das relativ zueinander zu machen. Hier steht noch dabei,
nicht pixelgenau, ja, also es gab tatsächlich Zeiten,
die kann heute sich gar keiner mehr vorstellen.
Da hat man noch ausgerechnet,
wie viele Pixel ist denn jedes Element breit und hat halt angegeben,
wie viele Pixel ist denn das für eine bestimmte Bildschirmgröße.
Heute würde das auch gar nicht mehr funktionieren,
weil jeder Bildschirm hat eine andere Größe, beziehungsweise sie können den größer oder kleiner machen.
Hier kümmert sich der Loyal Out Manager um dieses Vergrößern und Verkleinern von Feldern,
inklusive Inhalt und sie können Regeln vorgeben,
was wird dann einfach gequetscht, was wird abgeschnitten,
was wird dann bei gegebenenfalls ausgeblendet,
wenn der Platz nicht reicht
So, und der Layout-Manager kümmert sich nicht nur um das hier,
sondern er kümmert sich darum auch, wie sieht das auf verschiedenen Plattformen aus.
Der Windows-Button sieht anders aus als der Mac-Button. Ja,
und auch das Erwartungs-, wie sieht das bei Zoom aus,
also wenn ich das kleine oder größer mache,
auch das ist je nach Betriebssystem vielleicht noch unterschiedlich.
So per default, also als Standard beginnt, besitzt jeder Container einen Layout-Manager.
Container, Sie erinnern sich, war das, was so geschachtelt passiert.
Wir hatten vorhin dieses schöne Bildchen schon mal. Ja,
wir hatten schon gesehen, Das ist hier zum Beispiel das gelbe Panel,
bestand hier aus zwei Labeln und zwei Textfelder, ja,
und die haben ein Layout-Manager und das blaue Panel hat auch einen Layout-Manager.
Und hier sehen wir jetzt, der Layout-Manager kümmert sich um
die Anordnung. Hier haben wir das sogenannte Flow-Layout,
die sind also alle in einer Linie,
da halt die reagieren anders aufquetschen, verkleinern das Bildschirm,
Platzes, als hier die tabellarisch angeordnet sind mit dem Critlayout.
Also es gibt mehrere Möglichkeiten und hier,
dass Frame selber halt so ein Border-Layout, es gibt mehrere Layout-Manager jeder,
man kann ihn setzen, man kann den abfragen,
man kann einen bestimmten wählen und damit hat man ein bestimmtes Layout gewählt.
Ja, das Standard-Layout für Frame is Border Layout,
aber man kann ganz eigene Sachen schreiben.
Ja, es gibt ganz viele. Wir gucken hier nur
die wichtigsten an. Und die wichtigsten sind das Card-Layout,
wo die Sachen so ein bisschen hintereinander haben und blättern können.
Das Border-Layout hat man schon gesehen mit oben und unten
einer durchgehenden Linie und da gibt es in der Mitte Elemente.
Flow-Layout ist eine waagerechte Anordnung, horizontale Anordnung,
wo sie bei Vergrößern, die dann noch weitere dazukommen.
Crid Layout hatten wir eben auch schon im Beispiel gesehen,
das war bei uns das Gelbe.
Das ist so eine tabellarische Anordnung und dann gibt es noch
kompliziertere Dinge, wo das irgendwie noch geschachtelt ist.
Crid Back, Layout, also da kann ich verschiedene Sachen zusammenfassen.
Da muss ich noch mehr Parameter angeben. Hier kann ich auch
noch Steuerung machen, wie das mit der Breite ist,
wie es sich beim Scrollen verhält und hier natürlich auch.
Wie gesagt, es gibt eine ganze Reihe von solchen Layout-Managern
und wir wollen, es betrachten ja nur die wichtigsten
Lassen wir uns doch für das Flow Layout das noch ein
bisschen genauer anschauen, wie sich das in Java aus.
Das Flow Layout, also soweit hatte ich ja eben schon
das skizziert, ordnet die Sachen in einer horizontalen Reihe an.
Notfalls wären die ungebrochenen Zeilen, man kann das steuern, wie ist der Abstand der Komponenten, wie ist der Abstand zum umgebenden Frame. Flow Layout gehört zum Paket AWT,
Abstract Windowing Tool Kid,
das ist ein Teil von dem kurzem Swing mit dazu oder beziehungsweise Swing ist eine Erweiterung von AWT,
nur dass sie nochmal wissen, zu dem Paket gehört hast und das sieht,
wenn wir so ein Bild erreichen wollen,
wie wir es hier unten haben, also das Obere bitte,
das kommt vom Betriebssystem, ob das jetzt so aussieht oder so,
das ist jetzt so eine X11-Darstellung hier, wenn ich das richtig sehe,
ja, man hat den Namen des Fensters, ja,
und da habe ich einen Button, noch einen Button,
noch einen beiden Norm-Button,
ja, also fünf Stück und die haben unterschiedliche Bezeichnungen.
Wir haben jeweils ein, wir setzen den Container, dann sagen wir,
das gibt ein Flowly-Out und weisen das Flow-Layout als Layout-Manager hier,
zu, das Content Pain ist dann das eigentliche,
wo der eigentliche Inhalt drin steckt und dann fügen wir zu
dem Content Pain Sachen hinzu und durch den Layout-Manager ist schon klar,
die liegen dann in dieser Reihenfolge, wie sie hier zugefügt werden.
Ja, und das erste heißt Button 1,
ganz klar sehen Sie die zwei,
die drei long nehmen Button 4 und so weiter.
Sie sehen das, dass die Länge jeweils an den Dingern angepasst ist. Ja,
so, dann gibt es noch hier die Möglichkeit,
dass man eine Ausrichtung angibt, zum Beispiel That Alignment für diesen Flow,
für diesen Flow-Layout-Manager, das gibt es bei unterschiedlichen Playout-Managern?
Gibt es da unterschiedliche Möglichkeiten? Ja,
hier kann ich nur horizontal und eine vertikale Lücke angeben,
Spacing, ja, 20 und 20, also wie sind die Abstände?
Auch das ist natürlich beim Flow-Manager anders als beim Creed-Manager.
Quid Layo, beim Flow-Lyout, also beim Grid-Lyout. Soweit. Ja,
dass man das gut macht, ist natürlich noch was anderes,
als dass man es ein Jahr wahr kann.
Das heißt, sie sollten auf jeden Fall noch
ein bisschen was im Hintergrund haben,
ein Wissen,
wie macht man das gut
Beziehungsweise, wie macht man es konform zu der eigenen Applikation?
Typischerweise gibt es für Applikationen immer irgendwelche Regeln, die man sich da hält.
Regeln zum Entwurfsregeln auf unserer Seite, seit der Softwaretechnik,
sind erstmal nur wie, wer ruft hier wen auf?
Und da geht es um die User-Interface-Klasse des Werkzeugs,
was die GUI-Komponenten erzeugt, verwaltet und layoutet.
Und damit ist die GUI-UUUI-UUI-Klasse sozusagen der Sammler-Sammelbehälter, wenn sie wollen.
Und sie ist für das Layout zuständig.
Alle Änderungen des Layouts, bitte nur darin und nicht in
der Werkzeugklasse
Ja, so, jetzt noch ein Beispiel, dass das,
wie es woanders aussieht, vorhin, als ich über mehrere Frameworks sprach,
für Java, da habe ich auch das Jahr,
war XXXX genannt, ja, VFX ist der Nachfolger von Swing.
Nur mal, dass ich die Yasia gesehen haben, wir behandeln das nicht,
wie gesagt, weil es einfach noch nicht so verbreitet ist.
Deswegen ist es viel mehr verbreitet. Hier ist es so,
dass wir eine XML, eine ähnliche Notation haben,
oder ich sage, passiert eine Notation,
ja, wir geben hier das Quidpain an, hier,
Integrate Pain, und hier Children,
Ente Children, und dann habe ich einen Button,
mit Klick und dann gibt es hier ein Label,
wo ich dann irgendwie einen Zähler drin habe mit einer gewissen Größe,
weil ich was darstellen kann.
Das wäre die Möglichkeit, wie ich so etwas angebe.
Das ist jetzt eine, hier steht deklarativ, deklarativ heißt,
es wird nur gesagt, was gemacht werden soll,
nicht wie es gemacht werden soll.
Es steht nicht dran, mache das so, mache das.
So ist es nicht nur so, das will ich.
So kennen wir das auch von Datenbanken,
dass man auch dort beschreibt, nur suche mir das.
Und nicht genau, wie das abläuft.
Das Gegenteil von Deklarativ wäre imperativ oder prozedual
Soweit dazu. Damit kommen wir zum Ende unseres Abschnitts über Gui-Gestaltung,
wo wir einen kleinen Exkurs zu Land das auch gemacht haben.
Aber vor allen Dingen haben wir das Frame-Work-Swing, was auf AWT basiert.
Und das beides zusammen dargestellt. Wir haben dargestellt,
wie Gui-Komponenten aussehen können, dass Listener und Events dabei eine wichtige Rolle spielen.
Und dass das Layout, mit Layout-Managern gestellt wird.
Damit können sie schon einfache Sachen bauen. Starten sie einfach mal.
Und wir haben ja noch den Henson Teil, der ihnen das,
wohin der Left das im Detail ein bisschen näher bringt.
Soweit vielen Dank