Vorlesung Informatik 1

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Informatik 1"

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

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.

Mehr

Java GUI Entwicklung mit Swing

Java 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

Mehr

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Programmieren 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,

Mehr

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

Einfü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.

Mehr

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2)

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

Mehr

Kapitel 8: Grafische Benutzerschnittstellen

Kapitel 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

Mehr

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

Institut 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

Mehr

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik

GUI-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

Mehr

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

EAD 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,

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Exkurs: Graphische Benutzeroberflächen FH Braunschweig/Wolfenbüttel Sommersemester 2009 1 / 22 Gliederung I Wiederholung Klassen, Objektorientierung (Kapitel 10,11) Exkurs:

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Einfü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

Mehr

Einführung in GUI-Programmierung. javax.swing

Einfü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

Mehr

Einführung in die Programmierung für NF. Übung

Einfü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

Mehr

Grafische Benutzeroberflächen

Grafische 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

Mehr

Javakurs für Fortgeschrittene

Javakurs 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

Mehr

Grafische Benutzeroberflächen

Grafische 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

Mehr

Programmiertechnik GUI Programmierung mit Java Swing

Programmiertechnik 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

Mehr

GroupLayout Anmerkung

GroupLayout 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

Mehr

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

Mehr

Grafische Benutzeroberflächen

Grafische 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"

Mehr

GUI Programmierung mit javax.swing

GUI 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

Mehr

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

Einfü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

Mehr

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Zentrale 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

Mehr

Layout Manager. Astrid Beck FHT Esslingen

Layout 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

Mehr

Objektorientierte Software-Entwicklung

Objektorientierte 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

Mehr

GUI Programmierung mit JAVA Swing

GUI 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

Mehr

11. GUI-Programmierung mit SWING Überblick

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

Mehr

Einführung in GUI-Programmierung. javax.swing

Einfü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

Mehr

import java.awt.*; import java.awt.event.*; import javax.swing.*;

import 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

Mehr

11. GUI-Programmierung mit SWING Überblick

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

Mehr

Funktionale und Objekt-Orientierte Programmierkonzepte

Funktionale 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

Mehr

7. Architektur interaktiver Systeme

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

Mehr

Java für Computerlinguisten

Java 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

Mehr

Ereignisse (Events) in Java

Ereignisse (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

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 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

Mehr

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

Mehr

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Graphische 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

Mehr

Hochschule 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 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

Mehr

Swing : Komponeneten I (Teil 1) Was ist Swing?

Swing : 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

Mehr

JLabel. dient zur Textanzeige. können auch Bilder anzeigen: mylabel.seticon( new ImageIcon( C:/Pfad/zum/Bild.jpg )

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

Mehr

Fachhochschule Stuttgart Prof. Uwe Schulz 5. Juli 2006 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4

Fachhochschule 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

Mehr

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Softwaretechnik (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

Mehr

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt

Ist 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

Mehr

Tag 9: Grafische Benutzeroberflächen

Tag 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)

Mehr

JList JTable Layout-Manager GridBagLayout. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

JList 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

Mehr

Programmieren II. Die Klasse JList. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester JList.

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

Mehr

GUI-Programmierung mit Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 11: GUI 1: AWT (1) GUI-Programmierung mit Java.

GUI-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

Mehr

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

Mehr

jcontentpane.setlayout(new BorderLayout()); // unten JPanel unten = new JPanel(); unten.setlayout( new BoxLayout(unten, BoxLayout.

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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Java 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

Mehr

Graphical User Interfaces

Graphical 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

Mehr

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek

Universitä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)

Mehr

Hochschule 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. 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:

Mehr

Fachhochschule Stuttgart Prof. Uwe Schulz 14. Juli 2005 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4

Fachhochschule 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

Mehr

Institut für Informatik

Institut 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,

Mehr

Ho Ngoc Duc IFIS - Universität zu Lübeck

Ho 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();

/** 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,

Mehr

Grundlagen der Programmierung APPLETS

Grundlagen 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

Mehr

1. Konventionelle Ein-/Ausgabebetonte Programmierung

1. 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,

Mehr

Ereignisverwaltung und Layout-Typen

Ereignisverwaltung 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

Mehr

Graphische Oberflächen Teil 1

Graphische 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

Mehr

Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum

Rü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

Mehr

Seite Architektur interaktiver Systeme. 7. Architektur interaktiver Systeme. 7.1 Entkopplung durch Sichten. Schichtenarchitektur

Seite 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

Mehr

Javakurs für Fortgeschrittene

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

Mehr

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel

Grundlagen 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

Mehr

Einführung in Swing. Graphical User Interface

Einfü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

Mehr

Teil 1: Grundeigenschaften von Rechnern und Software

Teil 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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben 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

Mehr

Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum

Rü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

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Sommersemester 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

Mehr

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

Universitä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

Mehr

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

Mehr

Vorlesung Programmieren

Vorlesung 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

Mehr

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing

Wiederholung: 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

Mehr

Medientechnik. Übung 2 Java Swing

Medientechnik. Ü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.

Mehr

Grafische Benutzeroberflächen mit Swing

Grafische 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,

Mehr

Objektorientierte und Funktionale Programmierung SS 2014

Objektorientierte 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

Mehr

Einführung in die OOP mit Java

Einfü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

Mehr

B1. Ein-/Ausgabebetonte Programmierung

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

Mehr

Liste Programmieren Java Überblick

Liste 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

Mehr

Instrumentierung und Dekodierung

Instrumentierung 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

Mehr

Graphische Oberflächen Teil 1

Graphische 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

Mehr

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

Ziel 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

$ 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

Mehr

JAVA Oberflächen mit Swing

JAVA 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

Mehr

Objektorientierte Softwareentwicklung

Objektorientierte 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

Mehr

Einige vorgefertigte Layout-Manager:

Einige vorgefertigte Layout-Manager: Einige vorgefertigte Layout-Manager: FlowLayout LayoutManager GridLayout BorderLayout LayoutManager2 CardLayout GridBagLayout GridBagConstraints 945 FlowLayout: Das Default-Layout der Klasse Panel. Komponenten

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte 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

Mehr

Oliver Brinkmann Java Swing-Applikationen & JApplets (mit NetBeans)

Oliver 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

Mehr

Teil 1: Grundeigenschaften von Rechnern und Software

Teil 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