Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger. 
Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Objektorientierte Beziehungsfragen
7 Ausnahmen müssen sein
8 Äußere.innere Klassen
9 Besondere Typen der Java SE
10 Generics<T>
11 Lambda-Ausdrücke und funktionale Programmierung
12 Architektur, Design und angewandte Objektorientierung
13 Komponenten, JavaBeans und Module
14 Die Klassenbibliothek
15 Einführung in die nebenläufige Programmierung
16 Einführung in Datenstrukturen und Algorithmen
17 Einführung in grafische Oberflächen
18 Einführung in Dateien und Datenströme
19 Einführung ins Datenbankmanagement mit JDBC
20 Einführung in <XML>
21 Testen mit JUnit
22 Bits und Bytes und Mathematisches
23 Die Werkzeuge des JDK
A Java SE-Paketübersicht
Stichwortverzeichnis


Download:

- Beispielprogramme, ca. 35,4 MB


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

Pfeil 17 Einführung in grafische Oberflächen
Pfeil 17.1 GUI-Frameworks
Pfeil 17.1.1 Kommandozeile
Pfeil 17.1.2 Grafische Benutzeroberfläche
Pfeil 17.1.3 Abstract Window Toolkit (AWT)
Pfeil 17.1.4 Java Foundation Classes und Swing
Pfeil 17.1.5 JavaFX
Pfeil 17.1.6 SWT (Standard Widget Toolkit) *
Pfeil 17.2 Deklarative und programmierte Oberflächen
Pfeil 17.2.1 GUI-Beschreibungen in JavaFX
Pfeil 17.2.2 Deklarative GUI-Beschreibungen für Swing?
Pfeil 17.3 GUI-Builder
Pfeil 17.3.1 GUI-Builder für JavaFX
Pfeil 17.3.2 GUI-Builder für Swing
Pfeil 17.4 Aller Swing-Anfang – Fenster zur Welt
Pfeil 17.4.1 Eine Uhr, bei der die Zeit nie vergeht
Pfeil 17.4.2 Swing-Fenster mit javax.swing.JFrame darstellen
Pfeil 17.4.3 Mit add(…) auf den Container
Pfeil 17.4.4 Fenster schließbar machen – setDefaultCloseOperation(int)
Pfeil 17.4.5 Sichtbarkeit des Fensters
Pfeil 17.4.6 Größe und Position des Fensters verändern
Pfeil 17.5 Beschriftungen (JLabel)
Pfeil 17.5.1 Mehrzeiliger Text, HTML in der Darstellung
Pfeil 17.6 Es tut sich was – Ereignisse beim AWT
Pfeil 17.6.1 Die Ereignisquellen und Horcher (Listener) von Swing
Pfeil 17.6.2 Listener implementieren
Pfeil 17.6.3 Listener bei dem Ereignisauslöser anmelden/abmelden
Pfeil 17.6.4 Adapterklassen nutzen
Pfeil 17.6.5 Innere Mitgliedsklassen und innere anonyme Klassen
Pfeil 17.6.6 Aufrufen der Listener im AWT-Event-Thread
Pfeil 17.7 Schaltflächen
Pfeil 17.7.1 Normale Schaltflächen (JButton)
Pfeil 17.7.2 Der aufmerksame ActionListener
Pfeil 17.7.3 Schaltflächen-Ereignisse vom Typ ActionEvent
Pfeil 17.7.4 Basisklasse AbstractButton
Pfeil 17.7.5 Wechselknopf (JToggleButton)
Pfeil 17.8 Alles Auslegungssache – die Layoutmanager
Pfeil 17.8.1 Übersicht über Layoutmanager
Pfeil 17.8.2 Zuweisen eines Layoutmanagers
Pfeil 17.8.3 Im Fluss mit FlowLayout
Pfeil 17.8.4 BoxLayout
Pfeil 17.8.5 Mit BorderLayout in alle Himmelsrichtungen
Pfeil 17.8.6 Rasteranordnung mit GridLayout
Pfeil 17.8.7 Weitere Layoutmanager
Pfeil 17.9 Textkomponenten
Pfeil 17.9.1 Text in einer Eingabezeile
Pfeil 17.9.2 Die Oberklasse der Textkomponenten (JTextComponent)
Pfeil 17.9.3 Geschützte Eingaben (JPasswordField)
Pfeil 17.9.4 Validierende Eingabefelder (JFormattedTextField)
Pfeil 17.9.5 Einfache mehrzeilige Textfelder (JTextArea)
Pfeil 17.10 Grundlegendes zum Zeichnen
Pfeil 17.10.1 Die paint(Graphics)-Methode für den AWT-Frame
Pfeil 17.10.2 Die ereignisorientierte Programmierung ändert Fensterinhalte
Pfeil 17.10.3 Zeichnen von Inhalten auf einen JFrame
Pfeil 17.10.4 Auffordern zum Neuzeichnen mit repaint(…)
Pfeil 17.10.5 Java 2D-API
Pfeil 17.11 Zum Weiterlesen
 

Zum Seitenanfang

17.2Deklarative und programmierte Oberflächen Zur vorigen ÜberschriftZur nächsten Überschrift

Grundsätzlich können grafische Oberflächen über eine Programm-API aufgebaut werden oder in einer deklarativen Beschreibung spezifiziert werden:

  • Programmierte Oberflächen: Der traditionelle Bau von grafischen Oberflächen in Java weist die Besonderheit auf, dass das Design der Oberfläche in Java-Code gegossen werden muss. Jede Komponente muss mit new erzeugt und mithilfe eines Layouts explizit angeordnet werden. Komplexe Oberflächen bestehen dann aus fast unwartbaren Mengen von Programmcode zum Aufbau der Komponenten, zum Setzen der Eigenschaften und Platzieren auf dem Container. Die Änderung des Layouts ist natürlich sehr schwierig, da mitunter auch für kleinste Änderungen viel Quellcode bewegt wird. In der Versionsverwaltung sieht das mitunter schrecklich aus.

  • Deklarative Oberflächen stehen im Gegensatz zu den programmierten Oberflächen. Bei ihnen sind die Beschreibung des Layouts und die Anordnung der Komponenten nicht in Java ausprogrammiert, sondern in einer externen Ressourcendatei beschrieben. Das Format kann etwa XML sein und spiegelt wider, wie das Objektgeflecht aussieht. Eine Ablaufumgebung liest die Ressourcendatei und übersetzt die Deklarationen in ein Geflecht von GUI-Komponenten. Im Hauptspeicher steht dann am Ende das Gleiche wie bei der programmierten GUI: ein Objektgraph.

Das andere Ufer

Microsoft erkannte ebenfalls die Notwendigkeit einer deklarativen Beschreibung von Oberflächen und nutzt intensiv XAML (Extensible Application Markup Language). Gleichzeitig gibt es leistungsfähige Tools und Designer für XAML. Die Firma Soyatec versucht sich mit eFace an einer Java-Realisierung (http://www.soyatec.com/eface).

 

Zum Seitenanfang

17.2.1GUI-Beschreibungen in JavaFX Zur vorigen ÜberschriftZur nächsten Überschrift

JavaFX unterstützt beide Möglichkeiten zum Aufbau von grafischen Oberflächen. Zum einen ist da die klassische API, die Knoten in einen Baum hängt, viel interessanter ist aber der deklarative Ansatz, der sehr schön Präsentation und Logik trennt. JavaFX selbst bietet eine Beschreibung auf XML-Basis, genannt FXML. XML ist selbst hierarchisch, kann also die grundlegende hierarchische Gliederung einer GUI in Containern und Komponenten sehr gut abbilden.

Neben FXML gibt es weitere proprietäre Beschreibungen und Mischformen. Eine davon ist FXGraph vom Projekt e(fx)clipse (http://www.eclipse.org/efxclipse), einer JavaFX-Unterstützung in Eclipse. Die Beschreibung ist eine DSL[ 236 ](Eine Domain Specific Language (DSL) ist eine »Spezialsprache«, die ein exklusives Format für einen klar abgegrenzten Anwendungsfall definiert. ) und definiert den Objektgraphen, der im Hintergrund in FXML umgesetzt wird. FXGraph ist kompakter als FXML und erinnert entfernt an JSON. Auch kann die JavaFX-API in alternativen Sprachen angesprochen werden, JavaScript und weitere Skriptsprachen wie Groovy (mit der Hilfe von GroovyFX[ 237 ](http://groovyfx.org)) oder Scala (zusammen mit ScalaFX[ 238 ](https://code.google.com/p/scalafx)) zeigen interessante Wege auf. Allerdings mischt sich dann doch wieder schnell die Deklaration der GUI mit Logik, was die Trennung zwischen Präsentation und Logik aufweicht. Es ist guter Stil, die Beschreibung der Benutzerschnittstelle und der Logik zu trennen, um auch Tests leichter zu realisieren.

 

Zum Seitenanfang

17.2.2Deklarative GUI-Beschreibungen für Swing? Zur vorigen ÜberschriftZur nächsten Überschrift

Für AWT und Swing hat sich für deklarative Oberflächen in den letzten Jahren kein Standard gebildet, und Oberflächen werden heute noch so programmiert wie vor 15 Jahren. Dass Swing-Oberflächen immer programmiert werden müssen, hält auf, auch wenn ein GUI-Builder heutzutage die Schmerzen minimiert. Über die WYSIWYG-Oberfläche (What You See Is What You Get) wird in der Regel das Layout mit allen Komponenten zusammengeklickt, und im Hintergrund erzeugt der GUI-Builder den Programmcode. Für die Laufzeitumgebung hat sich also nichts verändert, aber für uns schon.

Um auch in Swing in die Richtung von deklarativen Oberflächen zu kommen, gibt es unterschiedliche Open-Source-Lösungen, da Oracle nichts im Angebot hat.

  • Swixml (http://www.swixml.org) nutzt das XML-Format zur Beschreibung von GUIs und bildet jede Swing-Klasse auf ein XML-Element ab. Später nutzt Swixml dann SAX und JDOM, um die XML-Datei einzulesen und zu repräsentieren und um zur Laufzeit einen Swing-Komponentenbaum aufzubauen. Die Folien unter http://www.swixml.org/slides.html geben einen Einblick in die Möglichkeiten. Seit Mitte 2011 wird Swixml nicht mehr erweitert.

  • Eine weitere Lösung zur deklarativen Beschreibung von Swing-Oberflächen bietet der Swing JavaBuilder (http://code.google.com/p/javabuilders). Die Open-Source-Bibliothek steht unter der Apache-Lizenz und nutzt statt XML das kompaktere YAML-Format, dessen Schreibweise noch weiter verkürzt wurde. Das letzte Release stammt von Ende 2011, eine Weiterentwicklung ist unwahrscheinlich.

Die Inaktivität lässt sich entweder damit erklären, dass die Produkte perfekt sind oder dass sich Entwickler mit den klassischen codegenerierenden GUI-Buildern anfreunden konnten oder dass die Tools mit dem Aufkommen von JavaFX einfach unattraktiv werden.

 


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück

 

 


Copyright © Rheinwerk Verlag GmbH 2017

Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 

[Rheinwerk Computing]



Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de