Vorlesung Informatik 1
|
|
- Hansi Bach
- vor 6 Jahren
- Abrufe
Transkript
1 Vorlesung Informatik 1 Fachhochschule für Technik Esslingen Studiengang Wirtschaftsinformatik Teil 5: GUI Programmierung Dr. rer. nat. Andreas Rau andreas.rau@hs-esslingen.de Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #1
2 Inhalt Dieser Teil der Vorlesung behandelt die die Pakete und Klassen Oberflächenprogrammierung. zur Kein Mensch kann sich alle Details merken. Daher ist es beim Umgang mit den hier beschriebenen Klassen immer wieder wichtig und richtig, auf die Klassenreferenz zurückzugreifen um dort die Methoden der jeweiligen Interfaces und Klassen nachzuschlagen (Wink mit dem Zaunpfahl!). Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #2
3 Graphische Oberflächen - Hintergrund In der IT-Steinzeit waren viele Programme überhaupt nicht interaktiv sondern wurden über Parameter auf der Kommandozeile gesteuert und arbeiteten mit Dateien statt mit dem Benutzer. Interaktive Applikationen hatten eine textorientierte Oberfläche (dies ist bei vielen Host-Anwendungen noch heute so). Mittlerweile sind graphische Benutzeroberflächen zum Standard geworden und ermöglichen auch "Normalsterblichen" den einfachen Umgang mit Computern. Doch was an der Oberfläche so einfach aussieht, erfordert im Hintergrund einiges an Arbeit. Je benutzerfreundlicher eine Oberfläche ist, desto mehr Aufwand war vermutlich für Ihren Entwurf(!) und ihre Realisierung notwendig. Darüberhinaus sind graphische Oberflächen überaus schwer zu testen, u.a. weil eine Automatisierung dieser Tests so schwierig ist. Um diesen Aufwand in Grenzen zu halten gibt es in nahezu jeder Programmiersprache Bibliotheken, welche die wichtigsten Mechanismen und Bausteine zur Realisierung von graphischen Oberflächen zur Verfügung stellen. Was bleibt ist der Aufwand für den Entwurf und der (Lern)aufwand um sich in den umfangreichen Bibliotheken zurechtzufinden. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #3
4 Graphische Oberflächen - Model/View/Controller Eines der elementaren Prinzipien bei der Programmierung graphischer Oberflächen ist die Trennung zwischen Daten und Applikationslogik auf der einen und Oberfläche und Oberflächenlogik auf der anderen Seite. Diese Aufgabentrennung dient dazu, die Verständlichkeit zu erhöhen und die Wiederverwendung der Applikationslogik zu ermöglichen. So ist es u.a. möglich die Oberfläche auszutauschen ohne die eigentliche Applikation zu verändern. Klassisch wird diese Trennung durch eine 3-Teilung in die Elemente Model (Daten und Logik), View (Anzeige) und Controller (Benutzerinteraktion) realisert. Man spricht daher auch vom MVC-Prinzip. In Java wird dieses Prinzip vereinfacht, indem View und Controller in einer Komponente, dem sogenannten ViewController, zusammengefasst werden. Dieser wird in Java auch als Delegate bezeichnet (vgl. Buch). Um dem Java-Ziel "write once, run anywhere" gerecht zu werden und in jeder Umgebung die richtige Darstellung (Look and Feel) anbieten zu können und nicht negativ aufzufallen, liegen die Delegates in verschiedenen Ausprägungen vor. Damit ist es z.b. möglich (wenngleich nicht sinnvoll) eine Java-Applikation unter Windows wie ein Linux-Programm aussehen zu lassen. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #4
5 Graphische Oberflächen Funktion: Events Die Ablaufsteuerung eines Programms mit graphischer Oberfläche unterscheidet sich maßgeblich von der eines Programms mit textbasierter Oberfläche. Während es im textbasierten Programm eine eigene Ablaufsteuerung (meist in Form einer Schleife) gibt, die Benutzereingaben wartet und diese verarbeitet, wartet ein Programm mit graphischer Oberfläche nicht selbst sondern wird vom Betriebssystem mit Tastatur- und Mausereignissen (Events) versorgt. Mit anderen Worten: Das textbasierte Programm hat ständig das Ohr an der Leitung während das graphische Programm wartet, bis das Telefon klingelt. Eine Konsequenz davon ist, dass die main-methode() eines Programms mit graphischer Oberfläche in der Regel mit dem Öffnen des Hauptfensters endet. Das Programm läuft jedoch trotzdem weiter wird automatisch informiert, wenn der Benutzer über Maus oder Tastatur mit dem Programmfenster interagiert. Außerdem "reserviert sich" ein textbasiertes Programm üblicherweise die Tastatur. Ein Programm mit graphischer Oberfläche dagegen "teilt sich" Tastatur und Maus mit allen anderen laufenden Applikationen. Die Zuteilung der Events erfolgt dabei an das jeweils aktive Fenster (man sagt, dieses "hat den Fokus"). Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #5
6 Graphische Oberflächen Prinzipien: Komposition & Events Graphische Oberflächen werden quasi nach dem LEGO-Prinzip aus einer Vielzahl von Bausteinen hierarisch aufgebaut (Komposition). Dabei ergibt sich eine Baumstruktur an deren Spitze das Hauptfenster steht. Bei der Darstellung eines Fensters muss der verfügbare Platz (manchmal auch als Canvas(=Leinwand) bezeichnet) zwischen den verschiedenen Bausteinen aufgeteilt werden. Die genaue Größe und Anordnung der Elemente, also das Layout, wird in Java typischerweise durch spezielle Objekte festgelegt. Wenn der Benutzer über Maus oder Tastatur mit einem Fenster interagiert wird dies in Form von Ereignissen (Events) registriert. Diese werden einem der Elemente in dieser Zerlegungshierarchie zugeteilt und von diesem verarbeitet. Das Fenster delegiert also die Verarbeitung der Events an den betroffenen Baustein. Die Auswahl des Bausteins erfolgt dabei entweder über dessen Position (z.b. bei Mausklicks) oder durch Anwendung des Fokus-Konzepts innerhalb des Fensters (z.b. aktives Eingabefeld für Tastatureingaben). Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #6
7 Exkurs: Vergleich von Benutzeroberflächen Textbasierte Programme die auf der Konsole bzw. Kommandozeile laufen, z.b. unter DOS, unterscheiden sich in vielerlei Hinsicht von solchen mit grafischer Oberfläche und Fenstern, z.b. unter (X-)Windows. Textbasierte Programme Besitzen die Konsole, d.h. Tastatur und Bildschirm, exklusiv* Haben einen Einstiegspunkt von dem alle Funktionen erreichbar sind (main) Programm = Baum von Funktionen, die sich gegenseitig aufrufen Sind (streng) kontrollflußorientiert Programme mit grafischer Oberfläche Teilen sich die Konsole mit anderen Programmen / Fenstern Haben mehrere Einstiegspunkte für verschiedene Teilfunktionen (listener) Fenster = Baum von Elementen, die auf Ereignisse reagieren Sind ereignisgesteuert Hinweis: Bei Webapplikationen wird alles noch komplizierter! *gilt nicht für virtuelle Konsolen (DOS Fenster unter Windows) Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #7
8 Graphische Oberflächen Elemente: Container & Controls Die Bausteine graphischer Oberflächen lassen sich grob in 3 Gruppen einteilen: Container (z.b. JFrame, JDialog, JPanel, JScrollPane, JTabbedPane): Container sind die Knoten im Baum. Sie dienen wie der Name schon andeutet zur "Aufbewahrung" anderer Elemente. Mit Ihrer Hilfe ist es möglich, die hierarchische Struktur der Oberfläche zu gliedern indem man Elemente zu Gruppen zusammenfasst und diesen verschiedene Fensterbereiche zuordnet. Controls / Components (z.b. JTextField, JButton, JRadioButton,...): Controls sind die Blätter im Baum. Sie dienen zur Interaktion mit dem Benutzer und machen die eigentliche Funktion der Oberfläche aus. Neben elementaren Controls wie Eingabefeldern, Checkboxes, Radiobuttons oder Pushbuttons gibt es auch komplexere Controls wie Listen, Tabellen oder Bäume. Diese sind oftmals aus einfachen Controls zusammengebaut. Decorations (z.b. JLabel*, Border, Insets): Decorations sind ebenfalls Blätter im Baum. Sie sind rein dekorative Elemente wie Texte, Grafiken oder Rahmen ohne Interaktionsmöglichkeit. *technisch eigentlich ein Control aber ohne Interaktionsmöglichkeit Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #8
9 Graphische Oberflächen Aufbau (Beispiel) Fenstersystem (Betriebssystem) Java Events Top Level Container Events Container Control Events Control Events Control Events Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #9
10 Graphische Oberflächen Struktur Komposition Vererbung und sonstige Beziehungen Container Control Decoration Control Container Layout Ein Container kann Controls enthalten (also auch weitere Container, da Container auch Controls sind). Controls können dekoriert werden. Ein Container ist auch ein Control (also können auch Container dekoriert werden). Außerdem hat er ein Layout. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #10
11 Graphische Oberflächen Koordinatensystem X Bildschirm y x width Y Fenster height x + y = location width + height = dimension bzw. size location + dimension = bounds Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #11
12 Graphische Oberflächen Bibliotheken In Java gibt es zwei Bibliotheken für graphische Oberflächen: AWT und Swing. AWT, das Abstract Windowing Toolkit, ist die ältere der beiden Bibliotheken und wird heute nicht mehr direkt verwendet. Es dient aber weiterhin als Basis für Swing, die neue Bibliothek. Die entsprechenden Pakete sind java.awt für AWT und javax.swing für Swing. Ein Betriebssystem mit graphischer Benutzeroberfläche wie stellt eine Implementierung der grundlegenden Bausteine (native Controls) für seine Applikationen zur Verfügung. Bei AWT greift jedes Oberflächenelement zur Darstellung auf einen solchen grundlegenden Baustein zurück. Dadurch entsteht eine starke Abhängigkeit von spezifischen Optik der jeweiligen Plattform. Darüberhinaus stellt nicht jede Plattform alle Elemente zur Verfügung. Im Unterschied dazu sind die Oberflächenelemente bei Swing vollständig in Java realisiert. Dadurch werden die oben genannten Abhängigkeiten und Einschränkungen auf Kosten einenes höheren Implementierungsaufwands (der Bibliothek, nicht unserer Programme!) vermieden. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #12
13 Das oberste Element der Oberflächenhierarchie ist das Fenster. Dieses wird in Swing durch die Klasse JFrame realisert. Ein Objekt der Klasse JFrame implementiert ein Fenster mit einstellbarer Titelzeile, Größe und Position. Zum öffnen des Fensters wird setvisible(true) aufgerufen. Der Aufruf der Methode setdefaultcloseoperation() dient dazu sicherzustellen, daß das Programm beim Schließen des Fensters beendet wird. import javax.swing.jframe; Graphische Oberflächen JFrame public class MyFrame extends JFrame { public MyFrame() { // Fenster mit div. DefaultCloseOps versuchen! super( "Fenstertitel"); // Fenstertitel an JFrame(String) übergeben setdefaultcloseoperation( EXIT_ON_CLOSE); // Fenster schließen = Ende setlocation( 10, 10); // Position nahe linke obere Bildschirmecke setsize( 200, 100); // 200 breit, 100 hoch public static void main( String[] args) { new MyFrame().setVisible(true); // main() endet, Programm läuft weiter Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #13
14 Als eines der einfachsten Oberflächenelemente dienen die Objekte der Klasse JLabel zur Anzeige von Beschriftungen in einem Fenster. Dabei kann neben dem Text auch die Vorder- und Hintergrundfarbe festgelegt werden. Allerdings sind Labels standardmäßig durchsichtig. import javax.swing.jframe; import javax.swing.jlabel; Graphische Oberflächen JLabel public class MyLabelFrame extends JFrame { public MyLabelFrame() { super( "Fenstertitel"); // Fenstertitel an JFrame(String) übergeben setdefaultcloseoperation( EXIT_ON_CLOSE); // Fenster schließen = Ende add( new JLabel( "Beschriftung")); // anonymes Label setlocation( 10, 10); // Position nahe linke obere Bildschirmecke setsize( 200, 100); // 200 breit, 100 hoch // main-methode wie gehabt Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #14
15 Die Klasse JTextField implementiert ein einfaches Eingabefeld zur Eingabe von Strings. Die Größe des Felds kann bei der Erzeugung im Konstruktor angegeben werden. Der Inhalt kann über die Methoden gettext() und settext() gelesen bzw. gesetzt werden. import javax.swing.jframe; import javax.swing.jtextfield; Graphische Oberflächen JTextField public class MyTextFrame extends JFrame { JTextField samplefield = new JTextField(10); // ca. 10 Zeichen breit public MyTextFrame() { super( "Fenstertitel"); // Fenstertitel an JFrame(String) übergeben setdefaultcloseoperation( EXIT_ON_CLOSE); // Fenster schließen = Ende add( samplefield); // zum Fenster hinzufügen setsize( 200, 100); // 200 breit, 100 hoch setlocationrelativeto( null); // Am Bildschirm zentrieren(!) // main-methode wie gehabt Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #15
16 Die Klasse JButton implementiert einen einfachen Button. Die zugehörige Aktion wird über einen sog. Listener implementiert. Dies ist ein Objekt mit einer festgelegten Methode die aufgerufen wird, wenn der Button gedrückt wird. Die Signatur dieser Methode ist im Interface ActionListener festgelegt. import javax.swing.jframe; import javax.swing.jbutton; import java.awt.event.actionevent; import java.awt.event.actionlistener; Graphische Oberflächen JButton public class MyButtonFrame extends JFrame implements ActionListener { public MyButtonFrame() { super( "Fenstertitel"); // Fenstertitel an JFrame(String) übergeben setdefaultcloseoperation( EXIT_ON_CLOSE); // Fenster schließen = Ende JButton button = new JButton( "Klick mich!"); // Button als lokale Variable(!) erzeugen button.addactionlistener( this); // Listener definieren getcontentpane().add( button); // zum Fenster hinzufügen setbounds( 10, 10, 200, 100); // Position und Größe in einem Aufruf setzen public void actionperformed( ActionEvent e) { System.out.println( "Danke!"); // main-methode wie gehabt Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #16
17 Graphische Oberflächen Listener Das Listener-Prinzip ist ein mächtiges Konzept zur Verarbeitung von Ereignissen und wird an vielen verschiedenen Stellen der Swing-Bibliothek verwendet. So kann auf diese Art und Weise auch auf Mausklicks, Mausbewegungen oder Veränderungen innerhalb eines Controls reagiert werden. Für jede Art von Listener gibt es (1) ein Interface (z.b. ActionListener) welches die zugehörigen Methoden definiert und (2) ein oder mehrere Event-Klassen (z.b. ActionEvent) deren Instanzen an die verschiedenen Methoden übergeben werden und das Ereignis näher beschreiben, z.b. den Button der gedrückt wurde oder die Position eines Mausklicks. Der Listener kann dabei nicht nur das Fenster selbst sondern ein beliebiges Objekt sein welches das entsprechende Listener-Interface implementieren. Zu deren einfacher Realisierung wurde Java speziell erweitert (vgl. Informatik 2). Um bei umfangreichen Interfaces nicht alle Methoden implementieren zu müssen stehen in vielen Fällen sogenannte Adapter-Klassen zur Verfügung die Default-Implementierungen der Methoden zur Verfügung stellen und von denen der eigene Listener abgeleitet werden kann. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #17
18 Verallgemeinerung: Das Observer-Pattern Listener-artige Mechanismen sind auch außerhalb von grafischen Oberflächen nützlich. Verallgemeinert heißt das Observer-Pattern und wird in der Klassenbibliothek speziell unterstützt durch a) Die Klasse Observable Dient als Basisklasse für Dienstanbieter und bringt Mechanismen zur Registrierung und Benachrichtung von Dienstnutzern mit. b) Das Interface Observer Gibt eine standardisierte Methode zur Benachrichtigung von Dienstnutzern vor. Beispiel: public class Anbieter extends Observable { //... public class Nutzer implements Observer { //... Action Box Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #18
19 Seitenblick: Operationen als Objekte(1) Listener sind ein Beispiel für ein verbreitetes Programmierprinzip in Java: Die Definition von Schnittstellen für Operationen und Die Realisierung von Operationen durch Klassen die diese implementieren Dieses Prinzip ist so einfach wie genial. Eigentlich ist ein Operation = eine Funktion ( = eine Methode). Da Methoden in Java eine "Heimat" brauchen, ergibt sich der Rest wie von selbst: Die Klasse enthält die Operation und die Schnittstelle sorgt dafür, dass man abstrahieren und mehrere Varianten einer Funktion anbieten kann. Damit kann man sich wie bei graphischen Oberflächen "zurückrufen lassen" (Callback) wenn etwas wichtiges passiert oder Algorithmen (z.b. einen Sortiervorgang) beeinflußen, indem man die entscheidende Operation (hier den Vergleich) als Parameter übergibt. So gibt es in Java Listener für verschiedene Events, Komparatoren für Sortieralgorithmen, Runnables für Threads,... In anderen Programmiersprachen werden derartige Aufgaben oftmals über Funktionszeiger realisiert. Dies ist aber viel tückischer und weniger verständlich. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #19
20 Anwendungsbeispiel // Datei Function.java public interface Function { public double compute( double x); // compute value for y // Datei LinearFunction.java public class LinearFunction implements Function { double m, b; Seitenblick: Operationen als Objekte(2) public LinearFunction( double m, double b) { this.m = m; this.b = b; public double compute( double x) { return m*x + b; Action Box Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #20
21 Seitenblick: Operationen als Objekte(3) Eselsbrücke: AktionsObjekte als Black Box Aus Sicht des Empfängers ist ein AktionsObjekt nichts anderes als ein Apparat mit bekannter Bedienoberfläche(=Interface): Einfache AktionsObjekte wie unser ActionListener haben "nur einen Knopf", andere wie z.b. ein MouseListener, haben mehrere Knöpfe. Die Funktion der Box (=Implementierung) hingegen ist dem Empfänger unbekannt bzw. egal, da sie letztlich dem Absender nutzen soll. Man könnte also auch sagen, ein AktionsObjekt ist ein Pieper, mit dem der Empfänger den Absender über bestimmte Ereignisse informieren und dadurch die entsprechende (Re)aktion auslösen kann. Action Box Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #21
22 Graphische Oberflächen Einfügen x Drei Es gibt 3 Möglichkeiten zum Einfügen von Komponenten in ein Fenster: add( label); // entspricht this.add( label); Wir fügen das Label (scheinbar) zum Fenster hinzu, dieses leitet den Aufruf jedoch an die ContentPane weiter. JFrame.add() dient also nur dem Komfort. getcontentpane().add( label); Wir greifen explizit auf die ContentPane zu und fügen das Label hinzu. Das ist aber etwas lästig, wenn man mehrere Komponenten hinzufügen möchte. Container contentpane = getcontentpane(); contentpane.add( label1); contentpane.add( label2); Über die Variable contentpane können mehrere Komponenten hinzugefügt oder die Eigenschaften der ContentPane, z.b. Layout oder Farbe, verändert werden. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #22
23 Graphische Oberflächen Konstruktionsprinzipien Zum Aufbau einer grafischen Oberfläche wird folgendes Vorgehen empfohlen: Aufbau der Oberfläche von klein nach groß bzw. von innen nach außen, d.h. es werden zuerst Komponenten erzeugt, dann ggf. (mit Layout) in Containern gruppiert und schließlich (mit Layout) ins Fenster eingefügt. Die Reihenfolge der Aktionen ist also stets: konstruieren konfigurieren - hinzufügen. Das Gruppieren in Containern funktioniert ähnlich wie bei der ContentPane mit Hilfe eines Objekts der Klasse JPanel (oder einer Spezialvariante davon): Beispiel: setlayout( new BorderLayout()); // Fenster vorkonfigurieren JPanel buttonpanel = new JPanel(); // konstruieren buttonpanel.setlayout( new FlowLayout()); // konfigurieren JButton button = new JButton( Klick mich! ); // konstruieren button.addactionlistener(...); // konfigurieren panel.add( button); // Button zum Panel hinzufügen // weitere Buttons add( panel, BorderLayout.CENTER); // Panel zum Fenster hinzufügen // weitere Panels oder Komponenten // Fenster nachkonfigurieren pack(); // oder setlocation() und setsize() Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #23
24 AUFRUF Graphische Oberflächen Verständlichkeit Programme mit graphischer Oberfläche stützen sich massiv auf Bibliotheken. Während jedoch bei der Benutzung von Bibliotheken für andere Aufgaben wie das Programm je nach Bedarf verschiedene Bibliotheksfunktionen aufruft und dann fortgesetzt wird, ist es beim Thema graphische Oberfläche genau umgekehrt: Die Bibliothek ruft je nach Ereignis verschiedene Programmteile auf. Programm main() println()...() Bibliothek Als Folge davon sind Programme mit graphischer Oberfläche zunächst schwer zu verstehen da man nicht sieht, wann welche Methode aufgerufen wird. Um sein eigenes Program zu verstehen (bzw. schreiben zu können), muss man also erst einmal verstehen, wie die Bibliothek funktioniert und zwar als Ganzes, nicht nur methodenweise. Glücklicherweise stellt man bei der Analyse jedoch fest, das vieles auf wenigen Grundprinzipien, v.a. Listenern, basiert! Programm Bibliothek main() setvisible() ENDE (warten) actionperformed() RÜCKRUF Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #24
25 Graphische Oberflächen Layout Manager Bei der Gestaltung von Oberflächen spielt die sorgfältige Anordnung der verschiedenen Elemente eine entscheidende Rolle. Um den Aufwand hierfür (sprich: die manuelle Festlegung von Position und Größe jedes einzelnen Elements) in Grenzen zu halten und auch bei Veränderung der Fenstergröße ein "vernünftiges" Aussehen zu erreichen (z.b. indem manche Element vergrößert werden und andere nicht) gibt es in Java bzw. Swing sog. Layout-Manager die die Elemente eines Fensters automatisch nach bestimmten Regeln anordnen. Die gängigsten LayoutManager sind BorderLayout (Default), Aufteilung des Fensters in Zonen für weitere Elemente FlowLayout, automatische Anordnung mit Umbruch von links nach rechts BoxLayout, horizontale oder vertikale Anordnung ohne Umbruch GridLayout, Tabellenförmige Anordnung in gleichgroßen Zellen GridBagLayout, Tabellenförmige Anordnung mit variablen Zellen Komplexere Layouts lassen sich ggf. durch Verschachtelung einfacher Layouts bauen. Trotzdem ist es weiterhin möglich, alles manuell (und starr) festzulegen (sog. NullLayout). Das macht aber eigentlich nur bei fester Fenstergröße Sinn. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #25
26 Graphische Oberflächen Layout Beispiele(1a) public class NullLayoutGUI extends JFrame { public NullLayoutGUI() { super( "NullLayout"); setdefaultcloseoperation( EXIT_ON_CLOSE); Container contentpane = getcontentpane(); contentpane.setlayout( null); setbounds( 10, 10, 200, 130); JButton button; for ( int i=0; i<9; ++i) { button = new JButton( Integer.toString( i+1)); button.setbounds( 10+60*(i%3), 10+30*(i/3), 50, 20); contentpane.add( button); // pack(); // no layout manager, this does not work public static void main( String[] args) { new NullLayoutGUI().setVisible( true); Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #26
27 Graphische Oberflächen Layout Beispiele(1b) NullLayout Eigenschaften Beliebige Gestaltung möglich Viel Aufwand ( Pixels zählen ) Positionen für alle Elemente und Fenstergröße manuell Starres Layout (keine Anpassung bei Größenänderung) NullLayout Anwendungsbereich Selten verwendet Für exotische Anordnungen Bei starren Rahmenbedingungen (z.b. feste Fenstergröße oder Teilbereich) Lernkontrolle Größen und Positionen selbst verändern Fenstergröße ändern Hinweis: Wer rechnen kann, muss weniger schreiben ;-) Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #27
28 Graphische Oberflächen Layout Beispiele(1c) NullLayout Schema Text Text Text Text Text Text "beliebige Anordnung, keine Vergrößerung" Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #28
29 Graphische Oberflächen Layout Beispiele(6a) public class BorderLayoutGUI extends JFrame { public BorderLayoutGUI() { super( "BorderLayoutGUI"); setdefaultcloseoperation( EXIT_ON_CLOSE); Container contentpane = getcontentpane(); contentpane.setlayout( new BorderLayout()); JButton button; String[][] buttondef = { // einfach mal einzelne Elemente auskommentieren! {"North", BorderLayout.NORTH, {"South", BorderLayout.SOUTH, {"East", BorderLayout.EAST, {"West", BorderLayout.WEST, {"Center", BorderLayout.CENTER, ; for ( int i=0; i<buttondef.length; ++i) { button = new JButton( buttondef[i][0]); contentpane.add( button, buttondef[i][1]); pack(); public static void main( String[] args) { new BorderLayoutGUI().setVisible( true); Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #29
30 BorderLayout Eigenschaften Plazierung der Elemente in Zonen Elemente füllen Zonen komplett aus (je ein Element, Größenanpassung) Gesamtlayout bleibt bei Größenänderungen erhalten (Zonen passen sich an) BorderLayout Anwendungsbereich Für spezielle Anwendungensbereiche Als Basislayout für ein Fenster (Toolbar, Arbeitsbereich, Statuszeile,...) Lernkontrolle Zonenzuordnung verändern Fenstergröße ändern Hinweise: Graphische Oberflächen Layout Beispiele(6b) Um mehrere Elemente in einer Zone zu plazieren müssen diese in einen Container (z.b. Jpanel) mit eigenem Layout verpackt werden. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #30
31 Graphische Oberflächen Layout Beispiele(2c) BorderLayout Schema "Zonenmodell mit elastischer Mitte" Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #31
32 Graphische Oberflächen Layout Beispiele(2a) public class FlowLayoutGUI extends JFrame { public FlowLayoutGUI() { super( "FlowLayout"); setdefaultcloseoperation( EXIT_ON_CLOSE); Container contentpane = getcontentpane(); contentpane.setlayout( new FlowLayout()); JButton button; for ( int i=0; i<9; ++i) { button = new JButton( Integer.toString( i+1)); contentpane.add( button); pack(); public static void main( String[] args) { new FlowLayoutGUI().setVisible( true); Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #32
33 Graphische Oberflächen Layout Beispiele(2b) FlowLayout Eigenschaften Horizontale Anordnung Kein Einfluss auf Größe der Elemente Automatischer Zeilenumbruch bei Größenänderung FlowLayout Anwendungsbereich Immer wenn Umbruch nicht vorkommt oder nicht stört Für Toolbars (Knopfleiste mit Umbruchmöglichkeit) oder Buttonleiste in Dialog Bei starren Rahmenbedingungen (z.b. feste Fenstergröße oder Teilbereich) Lernkontrolle Größe von Komponenten vordefinieren Fenstergröße ändern Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #33
34 Graphische Oberflächen Layout Beispiele(2c) FlowLayout Schema "Automatischer Umbruch, Zentrierung" Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #34
35 Graphische Oberflächen Layout Beispiele(3a) public class XBoxLayoutGUI extends JFrame { public XBoxLayoutGUI() { super( "BoxLayout(X)"); setdefaultcloseoperation( EXIT_ON_CLOSE); Container contentpane = getcontentpane(); contentpane.setlayout( new BoxLayout( contentpane, BoxLayout.X_AXIS)); JButton button; for ( int i=0; i<9; ++i) { button = new JButton( Integer.toString( i+1)); // Try the following alignment constants from class JComponent: // TOP_ALIGNMENT, CENTER_ALIGNMENT(=Default) or BOTTOM_ALIGNMENT // Hint: You must resize the window to see the effect! button.setalignmenty( BOTTOM_ALIGNMENT); contentpane.add( button); pack(); public static void main( String[] args) { new XBoxLayoutGUI().setVisible( true); Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #35
36 Graphische Oberflächen Layout Beispiele(3a) public class YBoxLayoutGUI extends JFrame { public YBoxLayoutGUI() { super( "BoxLayout(Y)"); setdefaultcloseoperation( EXIT_ON_CLOSE); Container contentpane = getcontentpane(); contentpane.setlayout( new BoxLayout( contentpane, BoxLayout.Y_AXIS)); JButton button; for ( int i=0; i<9; ++i) { button = new JButton( Integer.toString( i+1)); // Try the following alignment constants from class JComponent: // LEFT_ALIGNMENT, CENTER_ALIGNMENT(=Default) or RIGHT_ALIGNMENT // Hint: You must resize the window to see the effect! button.setalignmentx( LEFT_ALIGNMENT); contentpane.add( button); pack(); public static void main( String[] args) { new YBoxLayoutGUI().setVisible( true); Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #36
37 Graphische Oberflächen Layout Beispiele(3b) BoxLayout Eigenschaften Horizontale oder Vertikale Anordnung Kein Einfluss auf Größe der Elemente Ausrichtung der Elemente gemäß Vorgabe auch bei Größenänderung BoxLayout Anwendungsbereich Wenn FlowLayout nicht in Frage kommt (wg. Umbruch) Zur Anordnung von Teilbereichen mit eigenem Layout Für einfache Teilbereiche (z.b. Buttonleiste, Label+Feld) Lernkontrolle Ausrichtungsvorgabe verändern Fenstergröße ändern siehe auch: Klasse Box mit Methoden für Struts und Glue Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #37
38 Graphische Oberflächen Layout Beispiele(2c) BoxLayout Schema "Aneinanderreihung, Feste Ausrichtung (hier: unten)" Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #38
39 Graphische Oberflächen Layout Beispiele(4a) public class GridLayoutGUI extends JFrame { public GridLayoutGUI() { super( "GridLayout"); setdefaultcloseoperation( EXIT_ON_CLOSE); Container contentpane = getcontentpane(); contentpane.setlayout( new GridLayout( 3, 3, 5, 5)); JButton button; for ( int i=0; i<9; ++i) { button = new JButton( Integer.toString( i+1)); contentpane.add( button); pack(); public static void main( String[] args) { new GridLayoutGUI().setVisible( true); Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #39
40 Graphische Oberflächen Layout Beispiele(4b) GridLayout Eigenschaften Gitterförmige Anordnung der Elemente in Zellen gleicher Größe Einfügen der Elemente zeilenweise gemäß Reihenfolge beim Einfügen Ausnutzung der kompletten Fläche, Elemente werden vergrößert Dynamische Anpassung des Gitters bei Größenänderungen GridLayout Anwendungsbereich Für einfache Gitterstrukturen (z.b. Bedienfelder) Ohne besonderen Anforderungen an Zellgröße und -Ausrichtung Lernkontrolle Gitterdimensionen anpassen Fenstergröße ändern Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #40
41 Graphische Oberflächen Layout Beispiele(2c) GridLayout Schema "Gleichförmiges Gitter über gesamten Raum" Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #41
42 Graphische Oberflächen Layout Beispiele(5a) public class GridBagLayoutGUI extends JFrame { public GridBagLayoutGUI() { super( "GridLayout"); setdefaultcloseoperation( EXIT_ON_CLOSE); Container contentpane = getcontentpane(); contentpane.setlayout( new GridBagLayout()); JButton button; GridBagConstraints gbc = new GridBagConstraints(); // Lists to provide the values for the loop below (think more, type less!) int[] anchor = { /*... anchor values for each button, z.b. GridBagConstraints.CENTER... */ ; int[] fill = { /*... fill values for each button, z.b. GridBagConstraints.NONE... */ ; double[] weightx = { /*... weightx values for each button, z.b. 0.0 */ ; double[] weighty = { /*... weighty values for each button, z.b. 0.0 */ ; for ( int i=0; i<9; ++i) { button = new JButton( Integer.toString( i+1)); gbc.gridx = i%3; gbc.gridy = i/3; gbc.anchor = anchor[ i]; gbc.fill = fill[ i]; gbc.weightx = weightx[ i]; gbc.weighty = weighty[ i]; contentpane.add( button, gbc); pack(); public static void main( String[] args) { new GridBagLayoutGUI().setVisible( true); Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #42
43 GridBagLayout Eigenschaften Gitterförmige Anordnung der Elemente Position, Größe und Ausrichtung der Elemente beliebig definierbar Dynamische Anpassung und Einhaltung der Regeln bei Größenänderungen GridBagLayout Anwendungsbereich Für komplexe Gitterstrukturen (z.b. Formulare) Bei besonderen Anforderungen an Zellgröße und -Ausrichtung Lernkontrolle Gitterparameter anpassen Fenstergröße ändern Hinweise: Graphische Oberflächen Layout Beispiele(5b) Das Constraint-Objekt kann wiederverwendet werden ( Marschroute ) Oftmals führt die Verschachtelung einfacher Layouts zum gleichen Ergebnis Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #43
44 Graphische Oberflächen Layout Beispiele(2c) GridBagLayout Schema "Variables Gitter, vielfältiges Verhalten bei Größenänderung" Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #44
45 Graphische Oberflächen Fazit Java stellt mit Swing eine umfangreiche und mächtige Bibliothek zur Realiserung von graphischen Oberflächen zur Verfügung. Diese Übersicht kann nur einen groben Überblick über die Elemente dieser Bibliothek und deren Verwendung. Zur praktischen Anwendung der Bibliothek sind intensive eigene Experimente unter Verwendung der Online-Hilfe und des Java-Tutorials notwendig. Dabei sollte der Schwerpunkt auf dem Verständnis der grundlegenden Mechanismen, insbesondere Layout-Manager und Events/Listener liegen. Details zu den einzelnen Swing-Klassen müssen auch "im Tagesgeschäft" immer wieder nachgelesen werden (kein Mensch kann sich alles merken). Moderne Entwicklungsumgebungen leisten dabei durch ihre Funktionen zur Code-Vervollständigung wertvolle Hilfe. Abgeraten wird indes vom Gebrauch von "Oberflächenbaukästen" (GUI-Editoren). Diese sind stets spezifisch und man lernt nur "wo man klicken muss" und nicht etwa, wie das Ganze funktioniert! Die Diskussion graphischer Oberflächen wird in Informatik 2 mit komplexen Controls wie Listen, Tabellen und Bäumen fortgesetzt. Andreas Rau, D:\home\ar\fhte\vorlesungen\informatik1\folien\informatik1-theorie-gui.odp #45
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1
Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.
MehrJava GUI Entwicklung mit Swing
Seminarunterlage Version: 5.03 Version 5.03 vom 13. Februar 2014 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen
MehrProgrammieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.
Programmieren II Dr. Klaus Höppner Hochschule Darmstadt SS 2008 1 / 22 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface,
MehrEinführung in die Programmierung für NF. Grafische Benutzeroberflächen
Einführung in die Programmierung für NF Grafische Benutzeroberflächen Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorienferte Programmierung kennenlernen.
MehrZiele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2)
Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Ziele Kapitel 8: Grafische Benutzerschnittstellen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische
MehrKapitel 8: Grafische Benutzerschnittstellen
Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 8: Grafische Benutzerschnittstellen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische
MehrInstitut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke
GUIs mit Swing Markus Reschke 28.08.2014 Beispiel: Ein einfaches GUI-Programm Siehe Painter.java Markus Reschke GUIs mit Swing 2 GUI Frameworks in Java AWT war das erste GUI-Framework, welches mit Java
MehrGUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik
GUI-Programmierung mit Java Teil I Unterlagen zum Modul OOP mit Java V 3.0 2007 by WBR1/BFH-TI 2011 by MOU2/BFH-TI GUI-Programmierung V3.0 2011 by WBR1&MOU2/BFH-TI Lernziele Die Kursteilnehmer sind in
MehrEAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ
EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,
MehrObjektorientierte Programmierung
Objektorientierte Programmierung Exkurs: Graphische Benutzeroberflächen FH Braunschweig/Wolfenbüttel Sommersemester 2009 1 / 22 Gliederung I Wiederholung Klassen, Objektorientierung (Kapitel 10,11) Exkurs:
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen
1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung
MehrEinführung in GUI-Programmierung. javax.swing
Einführung in GUI-Programmierung javax.swing GUI Graphical User Interface ( Grafische Benutzerschnittstelle ) Anschaulichere und leichtere Möglichkeit zur Dateneingabe und Kontrolle von Programmen Stellt
MehrEinführung in die Programmierung für NF. Übung
Einführung in die Programmierung für NF Übung 09 18.12.2013 Inhalt Korrektur Blatt 8 Wiederholung Design Patterns Einführung in GUI s mit Java Swing und AWT Einführung in die Programmierung für NF Übung
MehrGrafische Benutzeroberflächen
Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Aufgabe Ein Benutzer soll zwei Zahlen in ein Programm
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 03: Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in GUI-Programmierung Motivation Grundlagen von Swing Praxis: UI für
MehrGrafische Benutzeroberflächen
Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Aufgabe Ein Benutzer soll
MehrProgrammiertechnik GUI Programmierung mit Java Swing
Programmiertechnik GUI Programmierung mit Java Swing Prof. Dr. Oliver Haase Software Engineering und Verteilte Systeme Raum F012 haase@htwg-konstanz.de Tel: 07531/206-720 Oliver Haase Hochschule Konstanz
MehrGroupLayout Anmerkung
Swing Layouts Layoutmanager Ordnen Elemente eines Containers nach einem bestimmten Verfahren an Der Container erfragt bei jeder Neudarstellung bei seinem Layoutmanager, wie die Komponenten des Containers
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik GUI-Programmierung mit Swing AWT und Swing Java enthält zwei Pakete zur Programmierung graphischer Oberflächen. java.awt: Das Abstract
MehrGrafische Benutzeroberflächen
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
MehrGUI Programmierung mit javax.swing
java.awt Swing Komponenten Layout Manager Ausblick GUI Programmierung mit University basierend auf Folien von Dr. Beatrice Amrhein (Bern), 19. Juni 2006 java.awt Swing Komponenten Layout Manager Ausblick
MehrEinführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22
Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 22 Einführung: Grafische Benutzeroberflächen 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische
MehrZentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)
1 JAVA für Bauingenieure Alexander Karakas SS 2008 Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 21.05.2008 2 Was ist ein(e) GUI? GUI = Graphical User Interface = Graphische
MehrLayout Manager. Astrid Beck FHT Esslingen
Layout Manager Astrid Beck FHT Esslingen Layout Manager Layout Manager arrangieren den Inhalt eines Containers gemäß vorgegebener Regeln Layout Manager BorderLayout North, South, East, West, Center FlowLayout
MehrObjektorientierte Software-Entwicklung
Objektorientierte Software-Entwicklung Priv.-Doz. Dr. Rolf Hennicker 08.01.2003 AWT und Swing AWT (Abstract Window Toolkit) und Swing 2 AWT (Abstract Window Toolkit) und Swing AWT und Swing bieten eine
MehrGUI Programmierung mit JAVA Swing
GUI Programmierung mit JAVA Swing Komponenten Layout Event Handling Imaging 2001 Thomas Weiler 1 JAVA Swing Bibliothek zur Erstellung grafischer Benutzerschnittstellen in JAVA Bietet Klassen für grafische
Mehr11. GUI-Programmierung mit SWING Überblick
11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing
MehrEinführung in GUI-Programmierung. javax.swing
Einführung in GUI-Programmierung javax.swing GUI Graphical User Interface ( Grafische Benutzerschnittstelle ) Anschaulichere und leichtere Möglichkeit zur Dateneingabe und Kontrolle von Programmen Stellt
Mehrimport java.awt.*; import java.awt.event.*; import javax.swing.*;
Swing Workshop Dieser Workshop enthält grundsätzliche Informationen über Swing und Java und regt mit einigen Beispielen und Übungen zum weiteren Erkunden dieses Themengebietes an. Kapitel 1: Das erste
Mehr11. GUI-Programmierung mit SWING Überblick
11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing
MehrFunktionale und Objekt-Orientierte Programmierkonzepte
Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1
Mehr7. Architektur interaktiver Systeme
7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 7.2 Ereignisgesteuerter Programmablauf 7.3 Benutzungsoberflächen (Fortsetzung) Layout-Manager Definition Ein Layout-Manager ist ein Objekt,
MehrJava für Computerlinguisten
Java für Computerlinguisten 5. Grafische Userinterfaces Christian Scheible Institut für Maschinelle Sprachverarbeitung 31. Juli 2009 Christian Scheible Java für Computerlinguisten 31. Juli 2009 1 / 33
MehrEreignisse (Events) in Java
Ereignisse (Events) in Java werden durch Aktionen an GUI-Komponenten ausgelöst Quelle: GUI-Komponente, die ein Ereignis als Instanz einer Event-Klasse erzeugt Beispiel: ein Button, der angeklickt wird
MehrCS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Graphische Benutzerschnittstellen I GUI erzeugen Seite 1 GUI GUI: Graphical User Interface Graphische Benutzeroberfläche Seite 2
MehrSwing. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 27.06.07 G. Bohlender (IANM UNI Karlsruhe) Swing 27.06.07 1 / 10 Übersicht 1 Einführendes
MehrGraphische Benutzungsoberflächen mit Java. Einführung in NetBeans
Graphische Benutzungsoberflächen mit Java Einführung in NetBeans Graphische Benutzungsoberflächen! Interaktion mit dem Programm! Datenein- und ausgabe! Rückmeldungen über Verarbeitung der Daten! Visualisierung
MehrHochschule der Medien Prof. Uwe Schulz 13. Juli 2009 Klausur Informatik, EDV-Nr Seite 1 von 6. Teil 2: Aufgaben
Hochschule der Medien Prof Uwe Schulz 13 Juli 2009 Klausur Informatik, EDV-Nr 40301 Seite 1 von 6 Name: Matr Nr: Teil 2: Aufgaben Hilfsmittel: Bearbeitungszeit: alle außer tragbare Computer und Nachbar
MehrSwing : Komponeneten I (Teil 1) Was ist Swing?
Was ist Swing? 1 Unterschied zu AWT (Abstract window Toolkit) Zusätzliche Komponenten von Swing,die zu Oberflächenerzeugung genutzt werden können: Keyboard Accelerators, also Tastenkombination zur Steuerung
MehrJLabel. dient zur Textanzeige. können auch Bilder anzeigen: mylabel.seticon( new ImageIcon( C:/Pfad/zum/Bild.jpg )
Swing Komponenten Thomas Wieczorek http://www.wieczo.net/?p=76 Hier trage ich die Komponenten zusammen, die Kreling und Wiedling in ihren Klausuren oft verwendet haben. Bei Verbesserung: Bitte Kommentar
MehrFachhochschule Stuttgart Prof. Uwe Schulz 5. Juli 2006 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4
Hochschule der Medien Klausur Informatik, EDV-Nr. 40301(42021) Seite 1 von 4 Name: Matr. Nr.: Note Teil 1: Keine Hilfsmittel! Bearbeitungszeit: 20 Minuten Frage Stichwort Punkte 1 Schleife 2 2 Code-Fragment
MehrSoftwaretechnik (Medieninformatik): GUIs mit Swing Überblick
Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick 1 Einführung 2 Einfache Swing Komponenten 3 Ereignisbehandlung und Adapterklassen 4 Zeichnen 5 Layout Manager 6 Komplexere Swing Komponenten
MehrIst eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt
GUI GUI = Graphical User Interface Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt Gute Übersicht über alle Funktionalitäten
MehrTag 9: Grafische Benutzeroberflächen
Kapitel 10 Tag 9: Grafische Benutzeroberflächen In Java gibt es zunächst zwei verschiedene Möglichkeiten Klassen für die Grafikausgabe zu verwenden. Eine Möglichkeit ist AWT (=Abstrakt Windows Toolkit)
MehrJList JTable Layout-Manager GridBagLayout. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011
Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 JList 2 JTable 3 Layout-Manager 4 GridBagLayout Die Klasse JList Die Klasse JList stellt einen Container für Auswahllisten
MehrProgrammieren II. Die Klasse JList. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester JList.
Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 37 JList JTable Layout-Manager GridBagLayout 2 / 37 Die Klasse JList Die Klasse JList stellt einen Container für Auswahllisten
Mehr...erinnern Sie sich? oopjs4b / kwhbkd4r
...erinnern Sie sich? oopjs4b / kwhbkd4r !" Ereignisbehandlung in awt/swing führt Liste interessierter Behandler GUI- Komponente (z.b. Knopf) wird eingetragen trägt ein Ereigniskanal fertigt ab neuer Behandler
MehrGUI-Programmierung mit Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 11: GUI 1: AWT (1) GUI-Programmierung mit Java.
Universität Osnabrück 1 GUI-Programmierung mit Java 3 - Objektorientierte Programmierung in Java Vorlesung 11: GUI 1: AWT (1) SS 2004 Prof. Dr. F.M. Thiesing, FH Dortmund Alle unsere bisherigen Anwendungsbeispiele
MehrHeute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1
Heute Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files 17.01.2017 IT I - VO 11 1 Organisatorisches Noch zwei UE und eine Wissensüberprüfung Heute
Mehrjcontentpane.setlayout(new BorderLayout()); // unten JPanel unten = new JPanel(); unten.setlayout( new BoxLayout(unten, BoxLayout.
04.07.2011 Lösungsvorschlag 1. Aufgabe (12 + 12 Punkte): Screendesign : im Center: Label mit Bild 3P: Panel im West mit BoxLayout und TextField, Scrollpane und TextArea 4P: Panel im East mit FlowLayout
MehrEinstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Ereignisverwaltung und Layout-Typen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Ereignis-Verwaltung 2 Layout-Typen GridLayout
MehrJava I Vorlesung 11 Graphische Oberflächen mit Swing
Java I Vorlesung 11 Graphische Oberflächen mit Swing 5.7.2004 Swing Komponenten Layout-Manager Events Swing und Threads Die Java-Plattform 2 Die Java-Plattform 3 "Hello World" in Swing HelloWorldS.java
MehrGraphical User Interfaces
Graphical User Interfaces SEP 184 Toolkits es gibt verschiedene Toolkits (= Sammlungen von Klassen, Anbindungen an Betriebssystem, etc.) für grafische Oberflächen Abstract Windows Toolkit (AWT) Swing Standard
MehrUniversität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek
Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek 1 Ereignis-orientierte Programmierung Prinzipien Programm besteht aus einer Reihe von Dämonen (=Listener) Dämon (=Listener)
MehrHochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr. 40301 Seite 1 von 5. Teil 2: Aufgaben
Hochschule der Medien Prof Uwe Schulz 14 Juli 2010 Klausur Informatik, EDV-Nr 40301 Seite 1 von 5 Name: Matr Nr: Teil 2: Aufgaben Hilfsmittel: alle außer tragbare Computer und Nachbar Bearbeitungszeit:
MehrFachhochschule Stuttgart Prof. Uwe Schulz 14. Juli 2005 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4
Hochschule der Medien Klausur Informatik, EDV-Nr. 40301(42021) Seite 1 von 4 Name: Matr. Nr.: Note Teil 1: Keine Hilfsmittel! Bearbeitungszeit: 20 Minuten Frage Stichwort 1 Schleife 2 2 Code-Fragment mit
MehrInstitut für Informatik
Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2009 Praktikum: Grundlagen der Programmierung Aufgabenblatt 11 Prof. R. Westermann, R. Fraedrich,
MehrHo Ngoc Duc IFIS - Universität zu Lübeck
Ho Ngoc Duc IFIS - Universität zu Lübeck 30.04.2003 SWING ist die Java Klassenbibliothek zur Entwicklung grafischer Oberflächen. Im Gegensatz zum AWT (Abstract Windowing Toolkit) nutzt SWING leichtgewichtete
Mehr/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();
Bereich: Grafische Benutzeroberflächen (UI), Events (2) Editor Package: de.dhbwka.java.exercise.ui.editor Klasse: Editor Aufgabenstellung: Schreiben Sie einen kleinen Texteditor mit Swing! Keine Panik,
MehrGrundlagen der Programmierung APPLETS
Grundlagen der Programmierung APPLETS Inhalt dieser Einheit Java-Applets: Java-Applets Vor- und Nachteile Sicherheitskonzepte Methoden Einbetten in HTML Graphical User Interface 2 Java Applets Applets
Mehr1. Konventionelle Ein-/Ausgabebetonte Programmierung
1. Konventionelle Ein-/Ausgabebetonte Programmierung 1.1 Realisierung grafischer Benutzungsoberflächen Beispiel Java AWT und Swing 1.2 Grundlagen der 2D-Computergrafik Beispiel Java-Grafikprogrammierung,
MehrEreignisverwaltung und Layout-Typen
Ereignisverwaltung und Layout-Typen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Ereignisverwaltung
MehrGraphische Oberflächen Teil 1
Graphische Oberflächen Teil 1 AWT und Swing Grundlegender Aufbau von GUIs Graphikausgabe Layoutmanagement Ereignismodell Menus und Actions GUI Elemente Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer
MehrRückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum
Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 20 Rückblick Themen Erste GUI-Anwendung Praktikum 2 / 20 Inhalt von Teil 1 Algorithmen Elementare Datentypen Operatoren Bedingte
MehrSeite Architektur interaktiver Systeme. 7. Architektur interaktiver Systeme. 7.1 Entkopplung durch Sichten. Schichtenarchitektur
7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 7.2 Ereignisgesteuerter Programmablauf 7.3 Benutzungsoberflächen 7. Architektur interaktiver Systeme 7.1 Entkopplung durch Sichten 'The
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 02: Streams filtern, Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Datenströme (Streams) Filtern FilterWriter, - Reader 2.
MehrGrundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel
Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel 17. 6. 2010 Kapitel 8: Java-Programmierung 8.1 Ereignisbehandlung, Benutzungsschnittstellen 8.2 Graphikprogrammierung 8.1 Ereignisbehandlung
MehrEinführung in Swing. Graphical User Interface
Einführung in Swing Ho Ngoc Duc IFIS - Universität zu Lübeck Graphical User Interface Ein GUI-Programm beinhaltet: Graphische Darstellung der Anwendungsdaten und Interaktionsmöglichkeiten in Fenstern Steuerung
MehrTeil 1: Grundeigenschaften von Rechnern und Software
Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software Aufgabe 1.1 [2P] Welcher fundamentale Unterschied besteht zwischen dem Zweck eines Computer von dem Zweck anderer Maschinen (etwa einer
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
MehrRückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum
Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2012 1 / 19 Rückblick Themen Erste GUI-Anwendung Praktikum 2 / 19 Inhalt von Teil 1 Algorithmen Elementare Datentypen Operatoren Bedingte
MehrEinstieg in die Informatik mit Java
1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet
MehrSommersemester Implementierung III: GUI und Verhalten (Teil 2)
Sommersemester 2003 Implementierung III: GUI und Verhalten (Teil 2) 26 Aufgabe 5 Implementierung III: GUI und Verhalten (Teil 2) Umfang: 1 Woche Punkte: 50 P. Als Nächstes soll die Implementierung des
MehrUniversität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets
Kapitel 3: Java Applets 1 Was sind Applets? kleine in Fenstern ausführbare Programme typisch: Aufruf im Browserfenster als Teil einer HTML-Seite Anfang des umgebenden HTML-Textes
Mehr5. Java Swing Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006
5. Java Swing Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung II Einordnung
MehrVorlesung Programmieren
Vorlesung Programmieren GUIs mit Java Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Bisher... 2 Apple Lisa Office System 3.1 3 Graphical
MehrWiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing
Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing Heinrich Hußmann Ludwig-Maximilians-Universität München Sommersemester 2003 Ludwig-Maximilians-Universität München Prof. Hußmann
MehrMedientechnik. Übung 2 Java Swing
Medientechnik Übung 2 Java Swing Planung Nr Zeitraum Thema 1 20.04. 25.04. Bildretusche mit Gimp 2 27.04. 01.05. GUI Programmierung 3 04.05. 08.05. Model-View Controller 4 18.05. 22.05. Bildfilter 5 26.05.
MehrGrafische Benutzeroberflächen mit Swing
Grafische Benutzeroberflächen mit Swing KW 30, Zentralübung Informatik II 2006-07-24 Klausur: Stichpunkte 1. Auswertung System.out.println("abc" instanceof String); Ergebnis von instanceof ist ein boolean,
MehrObjektorientierte und Funktionale Programmierung SS 2014
Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten
MehrEinführung in die OOP mit Java
Einführung in die OOP mit Java Das Event-Hanlding Übersicht Event - Handling Das im JDK 1.1 Grundlagen Ereignistypen Ereignisquellen Adapterklassen für den Nachrichtenverkehr Variante1: Implementierung
MehrB1. Ein-/Ausgabebetonte Programmierung
B1. Ein-/Ausgabebetonte Programmierung B1.1 Mensch-Maschine-Kommunikation B1.2 Modell-Sicht-Paradigma B1.3 Bausteine für grafische Oberflächen B1.4 Ereignisgesteuerte Programme Ludwig-Maximilians-Universität
MehrListe Programmieren Java Überblick
Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 3 Vererbung 4 Schnittstellen 5 Innere Klassen 6 Exceptions 7 Funktionsbibliothek 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe
MehrInstrumentierung und Dekodierung
116 Copyright 1996-1998 by Axel T. Schreiner. All Rights Reserved. Instrumentierung und Dekodierung Erweiterung der Grafikklassen Das awt-paket erweitert alle Klassen für Grafikobjekte in java.awt, so
MehrGraphische Oberflächen Teil 1
Graphische Oberflächen Teil 1 AWT und Swing Grundlegender Aufbau von GUIs Graphikausgabe Layoutmanagement Ereignismodell Menus und Actions GUI Elemente Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer
MehrZiel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java
GUI-Programmierung in Java GUI-Programmierung in Java 2002 Prof. Dr. Rainer Manthey Informatik II 1 AWT und Swing Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen
Mehr$ java awt.main A # typische Dekodierung $ java -Dtrace=all awt.main A # alle Events $ java -Dtrace=none awt.main A # keine Dekodierung
111 Copyright 1996-1998 by Axel T. Schreiner. All Rights Reserved. Button [ Applet] Beispiel A dient zum Experimentieren mit Button- und Panel-Objekten. Button stammt von Component ab, stellt einen String
MehrJAVA Oberflächen mit Swing
JAVA Oberflächen mit Swing Grafik von http://javafx.com 159 AGENDA Grundlagen GUI Swing JavaFX 160 GRAPHISCHE BENUTZEROBERFLÄCHEN (1) AWT = Abstract Window Toolkit Verwendet die jeweiligen GUI-Komponenten
MehrObjektorientierte Softwareentwicklung
Objektorientierte Softwareentwicklung Exkurs GUI-Programmierung mit Java-SWING Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Für Hinweise und konstruktive Kritik
MehrEinige vorgefertigte Layout-Manager:
Einige vorgefertigte Layout-Manager: FlowLayout LayoutManager GridLayout BorderLayout LayoutManager2 CardLayout GridBagLayout GridBagConstraints 945 FlowLayout: Das Default-Layout der Klasse Panel. Komponenten
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute
MehrOliver Brinkmann Java Swing-Applikationen & JApplets (mit NetBeans)
Oliver Brinkmann oliver.brinkmann@smail.fh-koeln.de Java Swing-Applikationen & JApplets (mit NetBeans) 1 Einführung in NetBeans Vorstellung: AWT-/Java-Swing-Paket JApplet Ereignisverarbeitung mit NetBeans
MehrTeil 1: Grundeigenschaften von Rechnern und Software
Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software Aufgabe 1.1 [2P] Welcher fundamentale Unterschied besteht zwischen dem Zweck eines Computer von dem Zweck anderer Maschinen (etwa einer
Mehr