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 Die Klassenbibliothek
14 Einführung in die nebenläufige Programmierung
15 Einführung in Datenstrukturen und Algorithmen
16 Einführung in grafische Oberflächen
17 Einführung in Dateien und Datenströme
18 Einführung ins Datenbankmanagement mit JDBC
19 Einführung in <XML>
20 Testen mit JUnit
21 Bits und Bytes und Mathematisches
22 Die Werkzeuge des JDK
A Java SE Paketübersicht
Stichwortverzeichnis

Download:
- Beispielprogramme, ca. 20,0 MB
- Übungsaufgaben, ca. 1,8 MB
- Musterlösungen, ca. 0,8 MB

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenbloom
Das umfassende Handbuch
Buch: Java ist auch eine Insel

Java ist auch eine Insel
Rheinwerk Computing
1306 Seiten, gebunden, 11. Auflage
49,90 Euro, ISBN 978-3-8362-2873-2
Pfeil 16 Einführung in grafische Oberflächen
Pfeil 16.1 GUI-Frameworks
Pfeil 16.1.1 Kommandozeile
Pfeil 16.1.2 Grafische Benutzeroberfläche
Pfeil 16.1.3 Abstract Window Toolkit (AWT)
Pfeil 16.1.4 Java Foundation Classes und Swing
Pfeil 16.1.5 JavaFX
Pfeil 16.1.6 SWT (Standard Widget Toolkit) *
Pfeil 16.2 Deklarative und programmierte Oberflächen
Pfeil 16.2.1 GUI-Beschreibungen in JavaFX
Pfeil 16.2.2 Deklarative GUI-Beschreibungen für Swing?
Pfeil 16.3 GUI-Builder
Pfeil 16.3.1 GUI-Builder für JavaFX
Pfeil 16.3.2 GUI-Builder für Swing
Pfeil 16.4 Aller Swing-Anfang – Fenster zur Welt
Pfeil 16.4.1 Eine Uhr, bei der die Zeit nie vergeht
Pfeil 16.4.2 Swing-Fenster mit javax.swing.JFrame darstellen
Pfeil 16.4.3 Mit add(…) auf den Container
Pfeil 16.4.4 Fenster schließbar machen – setDefaultCloseOperation(int)
Pfeil 16.4.5 Sichtbarkeit des Fensters
Pfeil 16.4.6 Größe und Position des Fensters verändern
Pfeil 16.5 Beschriftungen (JLabel)
Pfeil 16.5.1 Mehrzeiliger Text, HTML in der Darstellung
Pfeil 16.6 Es tut sich was – Ereignisse beim AWT
Pfeil 16.6.1 Die Ereignisquellen und Horcher (Listener) von Swing
Pfeil 16.6.2 Listener implementieren
Pfeil 16.6.3 Listener bei dem Ereignisauslöser anmelden/abmelden
Pfeil 16.6.4 Adapterklassen nutzen
Pfeil 16.6.5 Innere Mitgliedsklassen und innere anonyme Klassen
Pfeil 16.6.6 Aufrufen der Listener im AWT-Event-Thread
Pfeil 16.7 Schaltflächen
Pfeil 16.7.1 Normale Schaltflächen (JButton)
Pfeil 16.7.2 Der aufmerksame ActionListener
Pfeil 16.7.3 Schaltflächen-Ereignisse vom Typ ActionEvent
Pfeil 16.7.4 Basisklasse AbstractButton
Pfeil 16.7.5 Wechselknopf (JToggleButton)
Pfeil 16.8 Alles Auslegungssache – die Layoutmanager
Pfeil 16.8.1 Übersicht über Layoutmanager
Pfeil 16.8.2 Zuweisen eines Layoutmanagers
Pfeil 16.8.3 Im Fluss mit FlowLayout
Pfeil 16.8.4 BoxLayout
Pfeil 16.8.5 Mit BorderLayout in alle Himmelsrichtungen
Pfeil 16.8.6 Rasteranordnung mit GridLayout
Pfeil 16.8.7 Weitere Layoutmanager
Pfeil 16.9 Textkomponenten
Pfeil 16.9.1 Text in einer Eingabezeile
Pfeil 16.9.2 Die Oberklasse der Textkomponenten (JTextComponent)
Pfeil 16.9.3 Geschützte Eingaben (JPasswordField)
Pfeil 16.9.4 Validierende Eingabefelder (JFormattedTextField)
Pfeil 16.9.5 Einfache mehrzeilige Textfelder (JTextArea)
Pfeil 16.10 Grundlegendes zum Zeichnen
Pfeil 16.10.1 Die paint(Graphics)-Methode für das AWT-Frame
Pfeil 16.10.2 Die ereignisorientierte Programmierung ändert Fensterinhalte
Pfeil 16.10.3 Zeichnen von Inhalten auf ein JFrame
Pfeil 16.10.4 Auffordern zum Neuzeichnen mit repaint(…)
Pfeil 16.10.5 Java 2D-API
Pfeil 16.11 Zum Weiterlesen
 
Zum Seitenanfang

16.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

16.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[ 231 ] 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 GoovyFX[ 232 ]) oder Scala (zusammen mit ScalaFX[ 233 ]) 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

16.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 Code-generierenden 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
 Zum Katalog
Zum Katalog: Java ist auch eine Insel Java ist auch eine Insel
Jetzt bestellen

 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java SE 8 Standard-Bibliothek
Java SE 8 Standard-Bibliothek


Zum Katalog: Professionell entwickeln mit Java EE 7
Professionell entwickeln mit Java EE 7


Zum Katalog: Schrödinger programmiert Java
Schrödinger programmiert Java


Zum Katalog: Einführung in Java
Einführung in Java


Zum Katalog: Programmieren lernen mit Java
Programmieren lernen mit Java


Zum Katalog: Apps entwickeln für Android 5
Apps entwickeln für Android 5


Zum Katalog: Apps entwickeln mit Android Studio
Apps entwickeln mit Android Studio


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo

 
 


Copyright © Rheinwerk Verlag GmbH 2016
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.

 
Nutzungsbestimmungen | Datenschutz | Impressum

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