* Die Klasse JFrame modelliert ein eigentständiges Fenster mit Titel und Rändern. * Die Methode setContentPane setzt den Inhalt eines JFrames, d.h. sie setzt dort ein JComponent-Objekt, das für das Zeichnen des Fensterinhalts zuständig ist. * Ein JPanel ist eine allgemeine grafische Komponente (rechteckig), die sich selbst zeichnen und weitere Komponenten enthalten kann. Defaultmäßig zeichnet sie einfach nur ihren eigenen Hintergrund. Wenn man in einer GUI verschiedene Bereiche möchte, so bieten sich JPanels an, die dann jeweils die eigentlichen Komponenten (Textfelder, Knöpfe usw.) pro Bereich enthalten. * BuchEingabe nutzt statt des Default-Layouts ein GridBagLayout als LayoutManager und enthält schon defaultmäßig eine weitere Komponente, nämlich das Textfeld. Wenn sich BuchEingabe also zeichnet, dann zeichnet es nicht nur einen Hintergrund, sondern man sieht auch das enthaltene Textfeld, und zwar vom GridBagLayout ausgerichtet (d.h. an die Größe von BuchEingabe angepasst). Desweiteren ist BuchEingabe gleichzeitig ein ActionListener, d.h. es kann auf Actions reagieren. Es meldet sich bei seinem eigenen Textfeld als Listener an, d.h. die Actions, auf die es reagiert, kommen vom Textfeld. Außerdem bietet BuchEingabe eine main-Methode, d.h. im Gegensatz zu JPanel findet der Java-Interpreter hier Code zum Ausführen. * Man kann im JFrame frame problemlos eine Instanz von BuchEingabe als ContentPane setzen, weil BuchEingabe ein JPanel ist, was wiederum von JComponent und darüber von Container erbt. Daher ist BuchEingabe auch ein Container, und das ist es, was setContentPane erwartet. * GridBagLayout ist der LayoutManager von BuchEingabe, d.h. die Klasse, die für alle in BuchEingabe enthaltenen grafischen Komponenten die richtige Größe und Ausrichtung innerhalb des Zeichenbereichs von BuchEingabe berechnet. * Ein ActionListener ist jedwede Klasse, die in der Lage ist, auf ActionEvents zu reagieren. Dazu muss sie die Methode actionPerformed implementieren (da findet das Reagieren statt). Dieses Interface ist Teil des Eventmodells: bestimmte Klassen erzeugen bestimmte Ereignisse, und andere Klassen (Listener) verarbeiten sie. ActionEvents werden von gragischen Komponenten wie Knöpfen und Eingabefeldern erzeugt, und zwar dann, wenn der Benutzer eine Aktion abgeschlossen hat (Eingabe abgeschlossen, Knopf gedrückt). * Beim Eintippen selbst passiert noch nichts... * ... aber wenn man das Eintippen abschließt (durch Enter), dann wird vom Textfeld ein ActionEvent erzeugt, das dann von BuchEingabe empfangen und verarbeitet wird. * BuchEingabe verarbeitet das Event so, dass es pauschal "Eingabe erkannt!" in das Textfeld schreibt. * Das ActionEvent kommt aus dem Textfeld. Das weiß man deswegen sicher, weil sich BuchEingabe nirgendwo anders in diesem Code als ActionListener meldet.