Einführung in JAVA - Teil II

Größe: px
Ab Seite anzeigen:

Download "Einführung in JAVA - Teil II"

Transkript

1 Einführung in JAVA - Teil II DR. PETER MERZ Wilhelm-Schickard-Institut für Informatik Abteilung Rechnerarchitektur Eberhard-Karls-Universität Tübingen

2 Inhalte der Vorlesung Einleitung 1 Java-I/O 3 Java Collections Framework 37 Graphische Benutzungsschnittstellen 52 Peter Merz Einführung in JAVA 2

3 Programmierung mit den Java-APIs Programmierung mit den Java-APIs: Die wichtigsten in Java 2 Development Kit enthaltenen API sind: Java Core API : Wichtige grundlegende Klassen Java I/O API : Ein- und Ausgabeströme Java Collections API : Allgemeine Datenstrukturen Java AWT Swing API : Graphische Benutzungsschnittstellen (GUI) AWT: Abstract Windowing Toolkit Swing: Neue API für GUI-Entwicklung Peter Merz Einführung in JAVA 3

4 Die Java I/O API Überblick über E/A (Ein-/Ausgabe-)Ströme: Im Daten einzulesen, öffnet ein Programm einen Strom auf einer Datenquelle und ließt die Daten sequentiell: Analog sendet ein Programm Daten zu einem externen Ziel, indem es einen Strom zum Ziel öffnet und die Daten sequentiell schreibt: Peter Merz Einführung in JAVA 4

5 Die Java I/O API E/A-Ströme: Datenquelle/Ziel: Datei, Speicher, Socket (Netzwerkverbindung) Algorithmus zum Lesen: open a stream while more information read information close the stream Algorithmus zum Schreiben: open a stream while more information write information close the stream Man unterscheidet Character Streams (Text) und Byte Streams (Binärdaten) Peter Merz Einführung in JAVA 5

6 Klassenhierarchie der E/A-Ströme Character Streams: Reader bietet eine unvollständige Implementierung zum Lesen von 16-Bit Zeichenströmen Einige Subklassen implementieren Ströme, die aus Datenquellen lesen (grau) Andere implementieren Ströme, die aus anderen Strömen lesen und Daten verarbeiten (weiss) Peter Merz Einführung in JAVA 6

7 Klassenhierarchie der E/A-Ströme Writer bietet eine unvollständige Implementierung zum Schreiben von 16-Bit Zeichenströmen Einige Subklassen realisieren Ströme, die in Datensenken schreiben (grau) Andere implementieren Ströme, die Daten verarbeiten und in andere Ströme schreiben (weiss) Peter Merz Einführung in JAVA 7

8 Klassenhierarchie der E/A-Ströme Byte Streams: Lesen Zum Lesen von Binärdaten dienen Subklassen von InputStream Einige Subklassen lesen aus Datenquellen (grau dargestellt) Andere Subklassen verarbeiten Ströme (weiss dargestellt) Peter Merz Einführung in JAVA 8

9 Klassenhierarchie der E/A-Ströme Byte Streams : Schreiben Zum Schreiben von Binärdaten dienen Subklassen von OutputStream Einige Subklassen schreiben in Datensenken (grau dargestellt) Andere Subklassen verarbeiten Ströme (weiss dargestellt) Peter Merz Einführung in JAVA 9

10 Klassenhierarchie der E/A-Ströme Aufbau der I/O Superklassen: Reader und InputStream definieren ähnliche APIs aber für unterschiedliche Datentypen: Reader sind definiert für Chars und Arrays von Chars: int read() int read(char cbuf[]) int read(char cbuf [], int offset, int length) InputStream sind definiert für Bytes und Arrays von Bytes: int read() int read(byte cbuf[]) int read(byte cbuf [], int offset, int length) Peter Merz Einführung in JAVA 10

11 Klassenhierarchie der E/A-Ströme Writer und OutputStream sind ebenfalls ähnlich: Writer definiert Methoden für Chars und Arrays von Chars: int write( int c) int write(char cbuf []) int write(char cbuf [], int offset, int length) OutputStream definiert Methoden für Bytes und Arrays von Bytes: int write( int c) int write(byte cbuf []) int write(byte cbuf [], int offset, int length) Alle Streams werden automatisch geöffnet beim Erzeugen (mit new). Mit close kann ein Strom geschlossen werden oder automatisch durch die Garbage Collection Peter Merz Einführung in JAVA 11

12 E/A-Ströme Die wichtigsten Streams: Lesen und Schreiben von Dateien: FileReader, FileWriter, FileInputStream, FileOutputStream Lesen und Schreiben in einen Speicherbereich (Array): CharArrayReader, CharArrayWriter, ByteArrayInputStream, ByteArrayOutputStream Lesen und Schreiben primitiver Datentypen in einem maschinenunabhängigen Format: DataInputStream, DataOutputStream Textausgabe (System.out.println()): PrintWriter, PrintStream Puffern von Strömen: BufferedReader, BufferedWriter, BufferedInputStream, BufferedOutputStream Konvertierung zwischen Character- und Byte-Strömen: InputStreamReader, OutputStreamWriter Peter Merz Einführung in JAVA 12

13 E/A-Ströme Beispiel Kopieren einer Text-Datei: import java.io. ; public class Copy { public static void main(string [] args) throws IOException { String inputfilename = farrago. txt ; String outputfilename = outagain.txt ; FileReader in = new FileReader(inputFileName); FileWriter out = new FileWriter(outputFileName); int c; while ((c = in.read ())!= 1) out. write(c); in.close (); out.close (); Peter Merz Einführung in JAVA 13

14 E/A-Ströme Beispiel zur Benutzung von Puffern: FileReader filereader = new FileReader( input1.txt ), BufferedReader reader = new BufferedReader(fileReader); while ((c = reader.read ())!= 1) { FileInputStream fileinputstream = new FileInputStream( input2.txt ), BufferedInputStream stream = new BufferedInputStream(fileInputStream); while ((c = stream.read())!= 1) { Peter Merz Einführung in JAVA 14

15 E/A-Ströme Beispiel für das Speichern von Binärdaten: prices = new double[n]; units = new int[n]; desc = new String[n);... DataOutputStream out = new DataOutputStream(new ByteArrayOutputStream()); for ( int i = 0; i < prices.length ; i ++) { out.writedouble(prices[ i ]); out. writeint ( units [ i ]); out.writechars(descs[i ]); out.writechar( \n ); out.close ();... Peter Merz Einführung in JAVA 15

16 E/A-Ströme Beispiel für das Speichern von Binärdaten: byte [] buffer = out.tobytearray(); DataInputStream in = new DataInputStream(new ByteArrayInputStream(buffer)); try { while (true) { double price = in.readdouble(); int unit = in.readint (); String desc = ; while ((chr = in.readchar()!= \n ) { desc.append(chr); System.out.println( Sie haben + unit + mal Artikel + desc + zum Preis von Euro + price + bestellt ); catch (EOFException e) {... in.close (); Peter Merz Einführung in JAVA 16

17 Serialisierung Objekt-Serialisierung: Klassen zum Speichern-/Lesen von Objekten: ObjectInputStream, ObjectOutputStream Es können nur Objekte serialisiert werden, die das Serializable Interface implementieren! Das Interface enthält keine Methoden! Alle Attribute (Außer: transient, static) werden der Reihe nach gespeichert, Referenzen auf andere Objekte (rekursiv) traversiert. Methoden: private void writeobject(java. io.objectoutputstream out) throws IOException private void readobject(java.io.objectinputstream in) throws IOException, ClassNotFoundException; Die writeobject Methode wirft eine NotSerializableException, wenn das übergebene Objekt nicht serialisierbar ist. Peter Merz Einführung in JAVA 17

18 Serialisierung Beispiel für Serialisierung: // Schreiben FileOutputStream out = new FileOutputStream( thetime ); ObjectOutputStream s = new ObjectOutputStream(out); s.writeobject( Today ); s.writeobject(new Date()); s. flush ();... // Lesen FileInputStream in = new FileInputStream( thetime ); ObjectInputStream s = new ObjectInputStream(in); String today = ( String)s.readObject(); Date date = (Date)s.readObject(); Peter Merz Einführung in JAVA 18

19 Erweiterte E/A-Operationen Weitere E/A-Klassen: File: Repräsentiert eine Datei im Dateisystems des Rechners. Informationen, wie Datei-Typ, Länge und Zugriffsrechte können erfragt werden. FileDescriptor: Repräsentiert einen File Handle bzw. File Descriptor, wird in den meisten Anwendungen nicht benötigt. RandomAccessFile: Im Gegensatz zu Readern/Streams erlaubt diese Klasse den wahlfreien Zugriff auf eine Datei. StreamTokenizer: Teilt den Inhalt eines Streams in Token (Worte, Symbole) ein. Wird zum Parsen von Text-Dateien verwendet. Die Package java.util.zip enthält weitere Streams, die eine Prüfsummenbildung oder das Komprimieren von Daten erlauben. Peter Merz Einführung in JAVA 19

20 Erweiterte E/A-Operationen RandomAccessFile: Erzeugung: /// Nur Lesen: new RandomAccessFile( farrago.txt, r ); /// Lesen und Schreiben: new RandomAccessFile( farrago.txt, rw ); Zusätzlich zu den normalen I/O-Operationen gibt es drei Methoden, die einen Lese-/Schreib-Zeiger verwenden: int skipbytes(int ) // Bewegt den Zeiger eine vorgegebene Anzahl Byte weiter void seek(long) // Bewegt den Zeiger an die angegebene Position long getfilepointer () // Liefert den Wert des Zeigers zurueck Peter Merz Einführung in JAVA 20

21 Erweiterte E/A-Operationen StreamTokenizer: class StreamTokenizer { /// Token Identifizierer public static final int TT NUMBER, TT WORD, TT EOF, TT EOL; // Token Werte public String sval; public double nval; /// Construktor public StreamTokenizer(Reader r); /// parse naechsten Token, gebe Identifier zurueck public int nexttoken();... ; Peter Merz Einführung in JAVA 21

22 Erweiterte E/A-Operationen Beispiel für StreamTokenizer: FileReader reader = new FileReader( test.text ); StreamTokenizer tokenizer = new StreamTokenizer(reader); int id = 0; while ( ( id = tokenizer.nexttoken ())!= tokenizer.tt EOF) { switch(id) { case tokenizer.tt NUMBER: System.out.println( Found number: + tokenizer.nval); break; case tokenizer.tt WORD: System.out.println( Found text: + tokenizer. sval ); break; case tokenizer.tt EOL: System.out.println( Found End Of Line ); break; Peter Merz Einführung in JAVA 22

23 Erweiterte E/A-Operationen Package java.nio (ab Java 2 Version 1.4): Zusätzlich zu den bisher besprochenen I/O-Klassen kommen: Buffers, die Datencontainer (für primitive Datentypen) darstellen Charsets und ihre assoziierten Decoder und Encoder, welche zwischen Bytes und Unicode-Zeichen wandeln Channels verschiedener Art, die Verbindungen zu Entitäten mit I/O-Operationen repräsentieren Selectors, die Multiplexing und nicht-blockierende I/O erlauben (selectable channels) Erlauben sehr schelle I/O, z.b. durch Memory-mapped I/O (MappedByteBuffer). Peter Merz Einführung in JAVA 23

24 Die Java Core API Package java.lang: Boolean, Integer, Double, Float,...: Klassen zur Kapselung der primitiven Datentypen Math: Mathematische Funktionen System: Systemnahe Funktionen, u.a. Ein- und Ausgabe auf den Bildschirm (Konsole) mit System.out und System.err und zum Kopieren von Arrays (arraycopy) String, StringBuffer: Klassen zur Behandlung von Zeichenketten, StringBuffer erlaubt schnelle Konkatenation von Strings... Peter Merz Einführung in JAVA 24

25 Die Java Core API Package java.util: Enthält Hilfsklassen und Datenstrukturen, wie Random: Zufallszahlengenerator Arrays: Hilfsklassen zum Füllen, Vergleichen, Durchsuchen und Sortieren von Arrays LinkedList: Verkettete Liste zum Speichern von Objekten Vector: Speichern von Objekten in einer Liste bzw. einem vergrößerbaren Array ArrayList: Speichern von Objekten in einer Liste (vergrößerbares Array Implementierung) HashTable: Implementierung einer Hash-Tabelle Peter Merz Einführung in JAVA 25

26 Die Java Core API Operationen auf Arrays: Kopieren: // Quelldaten aus array src nach Array dst kopieren // src position, dst position geben die Startindizies an und length // die Anzahl der zu kopierenden Elemente System.arraycopy(src, src position, dst, dst position, length ); Sortieren,Füllen: Arrays.sort(array1 ); // Sortieren von array1 in aufsteigender Reihenfolge Arrays.sort(vec, a, b ); // Sortieren von Index a bis b 1 (vec[b] nicht) Arrays. fill (y, 0); // Array y [] mit Nullen fuellen Vergleichen: if ( Arrays.equals(arrays1, arrays2 )) {... Peter Merz Einführung in JAVA 26

27 Die Java Core API Datenstruktur Vector: public Vector(int initialcapacity); Erzeugt einen Vektor mit vorgegebener Länge public int size(); Liefert die aktuelle Anzahl Elemente public void addelement(object element); Fügt ein Objekt dem Vektor hinzu public void clear(); Löscht alle Elemente public Object getelementat(int index); Liefert das Objekt an Stelle index im Vektor public Object setelementat(object element, int index); Ersetzt das Objekt an Position index Peter Merz Einführung in JAVA 27

28 Die Java Core API public Object removeelementat(int index); Löscht das Element an Position Index und liefert es zurück (alle folgenden werden um eins nach Vorne geschoben) public Object removeelement(object o); Löscht das erste Element, das identisch zu o ist. Es verwendet zum Vergleich der Objekte die equals-methode! public Enumeration elements(); Liefert eine Aufzählung aller Elemente im Vektor. Dazu wird ein Objekt, welches das Interface Enumeration implementiert zurückgeliefert. Peter Merz Einführung in JAVA 28

29 Die Java Core API Beispiel Verwendung von Vector: vector = new Vector(100); String string1 = ; String string2 = Hello World ; vector.addelement(string1); // Fuegt einen String hinzu vector.addelement(string2); // Fuegt einen String hinzu... vector.removeelementat(1); // Loescht Element an Position 1 for(int i = 0; i < vector.size (); i++) { // Liefert einen String Cast ist notwendig String str = ( String)vector.getElementAt(i); System.out.println( str ); Peter Merz Einführung in JAVA 29

30 Die Java Core API Vector und Enumerations: Das Interface Enumeration erlaubt eine alternative Verwendung eines Vectors public interface Enumeration { boolean hasmoreelements(); Object nextelement(); Beispiel: vector = new Vector();... for ( Enumeration e = vector.elements() ; e.hasmoreelements() ;) { System.out.println(e.nextElement()); Peter Merz Einführung in JAVA 30

31 Die Java Core API Datenstruktur ArrayList: public ArrayList(int initialcapacity); Erzeugt einen Vektor mit vorgegebener Länge public void add(object element); Fügt ein Objekt dem Vektor hinzu public Object get(int index); Liefert das Objekt an Stelle index im Vektor public Object set(int index, Object element); Ersetzt das Objekt an Position index public Object remove(int index); Löscht das Element an Position Index und liefert es zurück (alle folgenden werden um eins nach Vorne geschoben) public int size(); Liefert die aktuelle Anzahl Elemente Peter Merz Einführung in JAVA 31

32 Die Java Core API public void clear(); Löscht alle Elemente Unterschiede Vector und ArrayList: Vector beinhaltet andere Methoden zum hinzufügen, löschen, etc. Ab Version 1.2 haben Vector und ArrayList angepasste Methoden, d.h. Vector enthält get(), set(), remove(),... ArrayList verwendet keine Enumeration sondern Iteratoren (werden später erläutert) Vector ist Thread-Safe, d.h. mehrere Threads (Programmstränge) können gleichzeitig mit einem Vector arbeiten Peter Merz Einführung in JAVA 32

33 Die Java Core API Beispiel Verwendung von ArrayList: arraylist = new ArrayList(); String string1 = ; String string2 = Hello World ; arraylist.add(string1 ); // Fuegt einen String hinzu arraylist.add(string2 ); // Fuegt einen String hinzu... arraylist.remove(1); // Loescht Element an Position 1 for(int i = 0; i < arraylist.size (); i++) { // Liefert einen String Cast ist notwendig String str = ( String) arraylist.get( i ); System.out.println( str ); Peter Merz Einführung in JAVA 33

34 Die Java Core API Die Klasse Hashtable: Assoziativspeicher - speichert zu Objekte über Schlüssel public HashTable(int initialcapacity); Erzeugt eine Hashtabelle. Parameter kann weggelassen werden. public Object put(object key, Object value); Fügt ein Objekt value unter dem Schlüssel key hinzu public Object get(object key); Liefert ein Objekt mit dem Schlüssel key public Object remove(object key); Entfernt ein Objekt mit dem Schlüssel key public int size(); Liefert die aktuelle Anzahl Elemente Peter Merz Einführung in JAVA 34

35 Die Java Core API public void clear(); Löscht alle Elemente public boolean containsvalue(object value); Liefert true, wenn value enthalten ist public boolean containskey(object key); Liefert true, wenn key enthalten ist public Enumeration elements(); Liefert alle Elemente (values) public Enumeration keys(); Liefert alle Schlüssel (keys) Peter Merz Einführung in JAVA 35

36 Die Java Core API Beispiel zu Hashtable: // Dieses Beispiel erzeugt eine Hashtabelle, die Integer Zahlen speichert. // Als üschlssel werden Strings verwendet. Hashtable numbers = new Hashtable(); numbers.put( one, new Integer(1)); numbers.put( two, new Integer(2)); numbers.put( three, new Integer(3)); // Um eine Zahl zu erhalten, verwendet man den folgenden Code: Integer n = ( Integer)numbers.get( two ); // Cast nicht vergessen! if ( n!= null ) { System.out.println( two = + n); Peter Merz Einführung in JAVA 36

37 Die Java Collections API Java Collections Framework: Was sind Collections? Eine Collection (Container) ist ein Objekt das andere Objekte zu einer Einheit zusammenfasst Beispiele sind: Poker-Hand Karten Mail-Ordner s Telefonbuch Zuordnungen von Namen zu Telefonnummern Beispiele in Java: Vector, ArrayList, HashTable Peter Merz Einführung in JAVA 37

38 Die Java Collections API Was ist ein Collections Framework? Es stellt eine vereinheitlichte Architektur zur Repräsentation und Verwendung von Collections dar! Bestandteile: Schnittstellen/Interfaces: Abstrakte Datentypen, die Collections darstellen. Ermöglichen die einheitliche Verwendung von Collections unabhängig von den Details ihrer Repräsentierung! Implementierungen: Konkrete Implementierungen der Collection Interfaces durch unterschiedliche Datenstrukturen. Algorithmen: Methoden, die häufige Berechnungen bzw. Operationen Collections ausführen. Diese Algorithmen sind polymorph, d.h. die selbe Methode kann für viele unterschiedliche Implementierungen verwendet werden. Peter Merz Einführung in JAVA 38

39 Die Java Collections API Vorteile des Collections Framework: Es reduziert Programmieraufwand! Es erhöht Programmgeschwindigkeit und Qualität! Es erlaubt die Interoperabilität von verschiedenen APIs! Es reduziert den Lernaufwand zur Verwendung neuer APIs! Es reduziert den Aufwand zur Entwicklung neuer APIs! Es fördert Wiederverwendung von Software! Peter Merz Einführung in JAVA 39

40 Die Java Collections API Interface-Hierarchie: Collection: Basis-Interface Set: Eine Collection, die keine doppelten Elemente enthält List: Eine geordnete Collection (Sequenz) Map: Eine Zuordnung von Schlüssel zu Werten, jeder Schlüssel kann nur einmal vorkommen SortedSet: Set mit Elementen in aufsteigender Reihenfolge SortedMap: Map mit Schlüsseln in aufsteigender Reihenfolge Sortieren erfolgt durch Comparable, Comparator-Interfaces Peter Merz Einführung in JAVA 40

41 Die Java Collections API Definition von Collection: public interface Collection { // Basic Operations int size (); boolean isempty(); boolean contains(object element); boolean add(object element); // Optional boolean remove(object element); // Optional Iterator iterator (); // Bulk Operations boolean containsall(collection c); boolean addall(collection c); // Optional boolean removeall(collection c); // Optional boolean retainall(collection c ); // Optional void clear (); // Optional // Array Operations Object [] toarray (); Object [] toarray(object a []); Peter Merz Einführung in JAVA 41

42 Die Java Collections API Definition von Set: public interface Set extends Collection { // Basic Operations int size (); boolean isempty(); boolean contains(object element); boolean add(object element); // Optional boolean remove(object element); // Optional Iterator iterator (); // Bulk Operations boolean containsall(collection c); boolean addall(collection c); // Optional boolean removeall(collection c); // Optional boolean retainall(collection c ); // Optional void clear (); // Optional // Array Operations Object [] toarray (); Object [] toarray(object a []); Peter Merz Einführung in JAVA 42

43 Die Java Collections API Definition von List: public interface List extends Collection { // Positional Access Object get(int index); Object set( int index, Object element); // Optional void add(int index, Object element); // Optional Object remove(int index); // Optional abstract boolean addall(int index, Collection c ); // Optional // Search int indexof(object o); int lastindexof(object o); // Iteration ListIterator listiterator (); ListIterator listiterator ( int index); // Range view List sublist( int from, int to ); Peter Merz Einführung in JAVA 43

44 Die Java Collections API Definition von Map: public interface Map { // Basic Operations Object put(object key, Object value); Object get(object key); Object remove(object key); boolean containskey(object key); boolean containsvalue(object value); int size (); boolean isempty(); // Bulk Operations void putall (Map t); void clear (); // Collection Views public Set keyset(); public Collection values(); public Set entryset(); Peter Merz Einführung in JAVA 44

45 Die Java Collections API Iteratoren: Iteratoren sind ähnlich wie Enumeratoren. Das Interface Iterator ist wie folgt definiert: public interface Iterator { boolean hasnext(); Object next (); void remove(); // Optional Verwendungsbeispiel: Löschen von Elementen einer Collection für die eine Bedingung cond erfüllt ist: static void filter ( Collection c) { for ( Iterator i = c. iterator (); i.hasnext(); ) if (! cond(i.next ())) i.remove(); Peter Merz Einführung in JAVA 45

46 Die Java Collections API Implementierungen im Überblick: Implementierung Hash-Tabelle Array Baum Verkettete Liste Set HashSet TreeSet Interfaces List ArrayList LinkedList Map HashMap TreeMap Sortierte Datenstrukturen: TreeMap : Implementiert Interface SortedMap TreeSet : Implementiert Interface SortedSet Peter Merz Einführung in JAVA 46

47 Die Java Collections API Algorithmen: Fast alle Algorithmen sind statische Methoden in der Klasse Collections (Parameter in eckigen Klammern sind optional): Sortieren: static void sort( List list [, Comparator c]) Binäre Suche: static int binarysearch(list list, Object key [, Comparator c]) Minimum und Maximum bestimmen: static Object min(collection collection [, Comparator comp]) static Object max(collection collection [, Comparator comp]) Peter Merz Einführung in JAVA 47

48 Die Java Collections API Algorithmen, fortgesetzt: Füllen und Kopieren: static void fill ( List list, Object o) static void copy(list dest, List src) Reihenfolgen umdrehen und zufällig vertauschen: static void reverse(list list ) static void shuffle ( List list ) Anmerkungen: Fast alle Algorithmen arbeiten auf Listen! Sets und Maps können in Listen konvertiert werden! Zusätzlich existieren für Sets und Maps sortierte Varianten! Peter Merz Einführung in JAVA 48

49 Die Java Collections API Sortieren von Objekten: Zu sortierende Objekte müssen das Comparable Interface implementieren: public interface Comparable { public int compareto(object o); Rückgabewert von obj1.compareto(obj2): -1 : obj1 ist kleiner als obj2 0 : beide Objekte sind gleich 1 : obj1 ist größer als obj2 Die Klassen String, Integer, Double, Float,... sind bereits Comparable, ebenso Date, File und einige andere! Peter Merz Einführung in JAVA 49

50 Die Java Collections API Sortieren von Objekten mit Comparator: In einigen Fällen kann es sinnvoll sein, einen Comparator zu verwenden: public interface Comparator { int compare(object obj1, Object obj2); Rückgabewert von compare(obj1, obj2): -1 : obj1 ist kleiner als obj2 0 : beide Objekte sind gleich 1 : obj1 ist größer als obj2 Anmerkung: Die zu sortierenden Objekte müssen nicht Comparable sein! Peter Merz Einführung in JAVA 50

51 Die Java Collections API Konvertierung von Datentypen: List, Set Array: toarray()-methoden in List und Set. List Set und umgekehrt: addall(collection c)-methoden in List und Set, oder über Konstruktoren. Map Collection: keyset()-methode liefert Schlüssel-Objekte als Set. values()-methode liefert Wert-Objekte als Collection. Peter Merz Einführung in JAVA 51

52 Graphische Benutzungsschnittstellen (GUI): Ziele: Vereinfachte Benutzung von Programmen Verwendung von Zeigergeräten oder anderen Eingabehilfen (Mäuse, Lichtstifte,...) Fenstertechnik zur übersichtlichen Darstellung Darstellung mehrerer Sichten und Programme gleichzeitig Darstellung von (bewegten) Bildern Wichtige Konzepte: Nebenander oder übereinander angeordnete Fenster Maus erlaubt neben Tastatur zielgerichtete Steuerung bzw. Bedienung Peter Merz Einführung in JAVA 52

53 Wichtige Merkmale von graphischen Benutzungsschnittstellen: Fenstermanagement: Minimierung, Maximierung, Verschieben, Vergrößern, Verkleinern Eingabe erfolgt über standardisierte Bedienelemente Darstellungsformen sind Text, Vektorgrafik oder Bilder (Rastergrafik) Wichtige Merkmale von GUI-Programmen: Programmabläufe sind ereignisgesteuert statt top down Hoher Grad an Wiederverwendung von Programmcode durch einheitliche Benutzungsschnittstellen GUI-API Peter Merz Einführung in JAVA 53

54 Java Swing API: Offizieller Name: Java Foundation Classes (JFC) Bestandteile: Swing Komponenten: Bedienelemente für GUI-Programme Look and Feel: Veränder- und erweiterbares Aussehen der Bedienelemente Accessibility API: Zugriff auf Eingabegeräte wie Blindenschriftleser Java 2D API (Java 2): Erweiterte Darstellungsformen von 2-dimensionaler Grafik Drag and Drop Support (Java 2) : Datenaustausch zwischen Programmen Swing basiert auf dem Abstract Windowing Toolkit (AWT). Peter Merz Einführung in JAVA 54

55 Visueller Überblick über die Swing-Komponenten: Man unterscheidet: Bedienelemente - Controls Standardelemente Editierbare Elemente Nichteditierbare Elemente Container Top Level Container Allgemeine Container Spezielle Container Peter Merz Einführung in JAVA 55

56 Standard-Bedienelemente: Buttons JCombobox JList Menus JSlider JTextField Buttons: JButton, JCheckButton, JRadioButton Menus: JMenu, JMenuBar, JMenuItem Peter Merz Einführung in JAVA 56

57 Standard-Bedienelemente, fortgesetzt: JToolBar JToolBar: Es können Buttons hinzugefügt werden Nichteditierbare Informationsdarstellung: JLabel JProgressBar JToolTip Peter Merz Einführung in JAVA 57

58 Editierbare (formatierte) Informationsdarstellung: JColorChooser JFileChooser JTable JTextArea JTree Peter Merz Einführung in JAVA 58

59 Top Level Container: Applet JDialog JFrame Diese Container können nicht in andere eingefügt werden, da sie äußere Rahmen (Fenster) darstellen. Applet: unsichtbares Fenster/Rahmen in einer Webseite JDialog: Eingabefenster (Benutzerdialog) JFrame: Beliebiges Fenster Peter Merz Einführung in JAVA 59

60 Allgemeine Container: JPanel JScrollPane JSplitPane JTabbedPane Diese Container erlauben das Einfügen beliebiger Bedienelemente oder Container. JPanel: Container, der einen Rahmen um seinen Inhalt zeichnet JScrollPane: Container, der seinen Inhalt scrollt JSplitPane: Container, der zwei Komponenten von einander trennt JTappedPane: Karteikarten-Container Peter Merz Einführung in JAVA 60

61 Spezielle Container: JInternalFrame JLayeredPane JRootPane JInternalFrame: Neues Fenster in einem bestehenden Fenster JLayeredPane: Einfügen von Ebenen, Controls können so übereinander liegen JRootPane: Innere Komponente eines Top-Level Containers Peter Merz Einführung in JAVA 61

62 Ein einfaches Swing Programm: import javax.swing. ; import java.awt.container; public class SwingExample1 { public static void main(string [] args) { JFrame frame = new JFrame( SwingExample1 ); // Erzeugt ein Fenster Container contentpane = frame.getcontentpane(); JLabel label = new JLabel( Hello World ); // Erzeugt ein neues Label contentpane.add(label); // Fuegt label dem Frame hinzu // Beenden des Programmes bei Schliessen des Fensters: frame.setdefaultcloseoperation(jframe.exit ON CLOSE); frame.pack(); // Anordnung der Inhalte des Frames frame.setvisible(true ); // Dartstellung auf dem Bildschirm Peter Merz Einführung in JAVA 62

63 Ein einfaches Swing Programm, Schritt für Schritt: Erzeugen eines Fensters mit einem Titel und speichern der ContentPane des Fensters: JFrame frame = new JFrame( SwingExample1 ); Container contentpane = frame.getcontentpane(); Erzeugen einer Control (Bedienungselement) und Hinzufügen zum Fenster (ContentPane des Fensters): JLabel label = new JLabel( Hello World ); contentpane.add(label); Fensterinhalt anordnen (pack) und darstellen: frame.pack(); frame.setvisible(true); Peter Merz Einführung in JAVA 63

64 Programmende: Was passiert bei Schließen des Fensters? Das wird durch folgende Anweisung festgelegt: frame.setdefaultcloseoperation(jframe.exit ON CLOSE); Wichtig: Obwohl nach frame.setvisible(true); die main-methode beendet wird, ist das Programm noch nicht beendet! Programmabbruch geschieht explizit durch den Benutzer. Peter Merz Einführung in JAVA 64

65 Programmablauf eines GUI-Programms: 1) Erzeugung von Fenster(n) 2) Hinzufügen von Controls zu Fenster(n) 3) Festlegen der Aktionen für die möglichen Ereignisse (Benutzereingaben) 4) Anordnen und Darstellen der Controls bzw. Fenster (Layout) 5) Warten auf und Verarbeiten von Benutzereingaben (Events) Erfolgt automatisch Ereignisgesteuerte Programmierung: Festlegen von Aktionen für Ereignisse Peter Merz Einführung in JAVA 65

66 Events und Listener: Aktionen werden in Swing über Listener ausgeführt: Bei Drücken eines Buttons wird ein ActionEvent ausgelößt zugehöriger ActionListener wird benachrichtigt: public interface ActionListener extends EventListener { public void actionperformed(actionevent e); Festlegen des ActionListeners mit: button.addactionlistener(object); Peter Merz Einführung in JAVA 66

67 Beispiel ActionListener: import javax.swing. ; import java.awt.container; import java.awt.event. ; public class SwingExample2 implements ActionListener { public void actionperformed(actionevent e) { System.out.println( Button pressed ); public static void main(string [] args) { JFrame frame = new JFrame( SwingExample2 ); // Erzeugt ein Fenster Container contentpane = frame.getcontentpane(); JButton button = new JButton( Click Me ); // Erzeugt einen neuen Button button.addactionlistener(new SwingExample2()); // Listener! contentpane.add(button); // Fuegt button dem Frame hinzu // Beenden des Programmes bei Schliessen des Fensters: frame.setdefaultcloseoperation(jframe.exit ON CLOSE); frame.pack(); // Anordnung der Inhalte des Frames frame.setvisible(true ); // Dartstellung auf dem Bildschirm Peter Merz Einführung in JAVA 67

68 Übersicht Events und Listener: Vorgang der Event auslöst Benutzer klickt auf einen Button, drückt Return während er in ein TextField eingibt, oder wählt einen Menüpunkt aus Benutzer schließt ein Fenster Benutzer drückt eine Maustaste während der Cursor über einer Komponente ist Benutzer bewegt die Maus über eine Komponente Komponente wird sichtbar Komponente bekommt den Tastatur-Fokus Tabellen- oder Listenauswahl ändert sich Listener-Typ ActionListener WindowListener MouseListener MouseMotionListener ComponentListener FocusListener ListSelectionListener Peter Merz Einführung in JAVA 68

69 Layout von Komponenten: Wie lassen sich Komponenten innerhalb von Containern anordnen? Statisch: Position und Größe müssen manuell vorgegeben werden Nachteile: Programmierer muss Position selbst berechnen und Sorge tragen, dass die gewählte Größe ausreicht, um Inhalte darzustellen Fontgrößenänderungen sind nicht ohne weiteres möglich Vergrößern und Verkleinern von Fenstern nicht möglich/sinnvoll Dynamisch: LayoutManager bestimmen Position und Größe Vorteile: Komponenten verwenden nur soviel Platz, wie sie tatsächlich benötigen Programmierer braucht keine Berechnungen zu machen Fontgrößenänderungen, Vergrößern und Verkleinern von Fenstern möglich Peter Merz Einführung in JAVA 69

70 BorderLayout: Verwendung: container.setlayout(new BorderLayout()); container.add(new JButton( Button 1 (NORTH) ), BorderLayout.NORTH); container.add(new JButton( 2 (CENTER) ), BorderLayout.CENTER); container.add(new JButton( Button 3 (WEST) ), BorderLayout.WEST); container.add(new JButton( Long Named Button 4 (SOUTH) ), BorderLayout.SOUTH); container.add(new JButton( Button 5 (EAST) ), BorderLayout.EAST); Peter Merz Einführung in JAVA 70

71 Eigenschaften von BorderLayout: Es gibt ein zentrales Feld und vier Ränder Beim Vergrößern wird dem Center der zusätzliche Platz zugefügt, alle anderen Felder bleiben unberührt. Es müssen nicht alle 5 Felder verwendet werden - eins reicht! BorderLayout ist das voreingestellte Layout für alle Top-Level-Container! Mit BorderLayout(int horizontalgap, int verticalgap) void sethgap(int) void setvgap(int) läßt sich Zwischenraum zwischen den Komponenten definieren. Peter Merz Einführung in JAVA 71

72 BoxLayout: Verwendung: container.setlayout(new BoxLayout(container, BoxLayout.Y AXIS)); container.add(new JCenteredButton( Button 1 )); container.add(new JCenteredButton( 2 )); container.add(new JCenteredButton( Button 3 )); container.add(new JCenteredButton( Long Named Button 4 )); container.add(new JCenteredButton( Button 5 )); Peter Merz Einführung in JAVA 72

73 Eigenschaften von BoxLayout: Elemente werden entweder horizontal (BoxLayout.Y AXIS) oder vertikal (BoxLayout.X AXIS) angeordnet. Im Gegensatz zu anderen LayoutManagern wird das X/Y-Alignment und die Maximale Größe einer Komponente berücksichtigt. Unsichtbare Füller können eingefügt werden: Box.createRigidArea(size): Zwischenraum mit fester Größe Box.createVerticalGlue(), Box.createHorizontalGlue(): Zwischenraum variabler Größe new Box.Filler(minSize, prefsize, maxsize): Wählbarer Zwischenraum mit minimaler, gewünschter und Maximaler Größe. Peter Merz Einführung in JAVA 73

74 FlowLayout: Verwendung: container.setlayout(new FlowLayout()); container.add(new JButton( Button 1 )); container.add(new JButton( 2 )); container.add(new JButton( Button 3 )); container.add(new JButton( Long Named Button 4 )); container.add(new JButton( Button 5 )); Peter Merz Einführung in JAVA 74

75 Eigenschaften von FlowLayout: Elemente werden in einer Reihe dargestellt in ihrer gewünschten Größe (getpreferedsize()). Wenn der horizontale Platz nicht ausreicht, wird eine neue Reihe hinzugefügt in Jeder Reihe sind die Elemente zentriert (FlowLayout.CENTER), linksbündig (FlowLayout.LEFT) oder rechtsbündig (FlowLayout.RIGHT) angeordnet: FlowLayout(int alignment, int horizontalgap, int verticalgap) void setalignment(int alignment) void sethgap(int horizontalgap) void setvgap(int verticalgap) Peter Merz Einführung in JAVA 75

76 GridLayout: Verwendung: container.setlayout(new GridLayout(0,2)); container.add(new JButton( Button 1 )); container.add(new JButton( 2 )); container.add(new JButton( Button 3 )); container.add(new JButton( Long Named Button 4 )); container.add(new JButton( Button 5 )); Peter Merz Einführung in JAVA 76

77 Eigenschaften von GridLayout: Elemente werden Zellen eines Gitternetzes platziert. Die Zahl der Reihen und Spalten wird durch den Konstruktor vorgegeben: Ebenfalls können Zwischenräume definiert werden. public GridLayout(int rows, int columns) public GridLayout(int rows, int columns, int horizontalgap, int verticalgap) void setrows(int rows) void setcolumns(int columns) void sethgap(int horizontalgap) void setvgap(int verticalgap) Peter Merz Einführung in JAVA 77

78 GridBagLayout: Verwendung: GridBagLayout gridbaglayout = new GridBagLayout(); GridBagConstraints contraints = new GridBagConstraints(); container.setlayout(gridbaglayout); button = new JButton( Button 1 ); // Set Contraints gridbaglayout.setconstraints(button, constraints ); container.add(button );... Peter Merz Einführung in JAVA 78

79 Eigenschaften von GridBagLayout: Elemente werden in Zellen eines Gitternetzes platziert, können aber über mehrere Zeilen oder Spalten gehen. Zeilen müssen nicht alle die selbe Höhe haben, Spalten nicht die selbe Breite GridBagConstraints legen fest auf wieviele Zellen sich eine Komponente verteilt: Peter Merz Einführung in JAVA 79

80 CardLayout: Verwendung: cardlayout = new CardLayout(); cards = new JPanel(); cards.setlayout(cardlayout); JPanel p1 = new JPanel(); p1.add(new JButton( Button 1 )); p1.add(new JButton( Button 2 )); p1.add(new JButton( Button 3 )); JPanel p2 = new JPanel(); Peter Merz Einführung in JAVA 80

81 p2.add(new JTextField( TextField, 20)); cards.add(p1, ButtonPanel ); cards.add(p2, TextPanel ); cardlayout.show( ButtonPanel ); container.add(cards, BorderLayout.CENTER); Eigenschaften von CardLayout: Zwei oder mehrere Komponenten teilen sich den Platz zur Darstellung Welche Komponente angezeigt wird, läßt sich wählen (show()-methode) Ähnlich zu TabbedPane Peter Merz Einführung in JAVA 81

82 Vollständiges Beispiel zur Verwendung von BoxLayout: Die Klasse JCenteredButton ist in Swing nicht definiert und muß daher selbst definiert werden. Sie wird dazu von JButton abgeleitet: import java.awt. ; import java.awt.event. ; import javax.swing. ; class JCenteredButton extends JButton { public JCenteredButton(String text) { super(text); setalignmentx(component.center ALIGNMENT); Peter Merz Einführung in JAVA 82

83 public class BoxWindow extends JFrame { public BoxWindow() { Container contentpane = getcontentpane(); contentpane.setlayout(new BoxLayout(contentPane, BoxLayout.Y AXIS)); // Hinzufuegen der Buttons contentpane.add(new JCenteredButton( Button 1 )); contentpane.add(new JCenteredButton( 2 )); contentpane.add(new JCenteredButton( Button 3 )); contentpane.add(new JCenteredButton( Long Named Button 4 )); contentpane.add(new JCenteredButton( Button 5 )); public static void main(string [] args) { BoxWindow frame = new BoxWindow(); // Erzeugt ein Fenster // Beenden des Programmes bei Schliessen des Fensters: frame.setdefaultcloseoperation(jframe.exit ON CLOSE); frame.pack(); // Anordnung der Inhalte des Frames frame.setvisible(true ); // Dartstellung auf dem Bildschirm Peter Merz Einführung in JAVA 83

84 Verwendung von JFrame: Wichtige Methoden: Erzeugt ein Fenster mit Titel (Constructor) Setzt Operation bei Schließen des Fensters durch den Benuter Container getcontentpane() Liefert den Container für den Fensterinhalt setjmenubar(jmenubar menubar) Fügt ein Menü dem Fenster hinzu JFrame(String title) setdefaultcloseoperation(int) Mögliche Parameter für DefaultCloseOperation: DO NOTHING ON CLOSE, HIDE ON CLOSE (default), DISPOSE ON CLOSE Zu jeder set-methode gibt es auch eine get-methode! Zur prinzipiellen Verwendung siehe vorhergehende Beispiele! Peter Merz Einführung in JAVA 84

85 Verwendung von JDialog: Wichtige Methoden: JDialog(JFrame parent, boolean modal) Erzeugt einen modalen oder nicht-modalen Dialog Container getcontentpane() Liefert den Container für den Fensterinhalt show() Zeigt den Dialog an hide() Macht den Dialog unsichtbar settitle(string) Setzt den Dialogtitel setmodal(boolean) Wählt modalen oder nicht-modalen Dialog JDialog ist ähnlich zu JFrame, wird bei Benutzereingaben verwendet Ein Dialog wird immer einem Hauptfenster zugeordnet Modaler Dialog: Eingabe nur in diesem Fenster/Dialog möglich, show()-methode wird beendet, wenn Fenster geschlossen wird (hide()) Peter Merz Einführung in JAVA 85

86 Verwendung von JLabel: Wichtige Methoden: JLabel(String text) Erzeugt ein Label mit Text JLabel(String text, Icon icon) Erzeugt ein Label mit Text und Icon settext(string) Setzt den Text des Label seticon(icon) Setzt das Icon des Label Zu jeder set-methode gibt es auch eine get-methode! Peter Merz Einführung in JAVA 86

87 Verwendung von JButton: Wichtige Methoden: JButton(String text) JButton(String text, Icon icon) settext(string) seticon(icon) setmnemonic(int) setactioncommand(string) Erzeugt ein Button mit Text Erzeugt ein Button mit Text und Icon Setzt den Text des Button Setzt das Icon des Button Setzt die Taste, mit der der Button gedrückt werden kann Setzt den Namen der Aktion, die ausgelöst werden kann addactionlistener(actionlistener) Fügt einen ActionListener hinzu removeactionlistener() Entfernt einen ActionListener Zu jeder set-methode gibt es auch eine get-methode! Peter Merz Einführung in JAVA 87

88 import javax.swing. ; import java.awt. ; import java.awt.event. ; public class ButtonExample implements ActionListener { public void actionperformed(actionevent e) { System.out.println( Button pressed, Action: + e.getactioncommand()); public static void main(string [] args) { ButtonExample buttonexample = new ButtonExample(); JFrame frame = new JFrame( SwingExample2 ); // Erzeugt ein Fenster Container contentpane = frame.getcontentpane(); JButton button = new JButton( Begin ); // Erzeugt einen neuen Button button.addactionlistener(buttonexample); // Listener! button.setmnemonic(keyevent.vk B); button.setactioncommand( start ); contentpane.add(button, BorderLayout.CENTER); // Fuegt button hinzu // Beenden des Programmes bei Schliessen des Fensters: frame.setdefaultcloseoperation(jframe.exit ON CLOSE); frame.pack(); // Anordnung der Inhalte des Frames frame.setvisible(true ); // Dartstellung auf dem Bildschirm Peter Merz Einführung in JAVA 88

89 Verwendung von JCheckBox: Wichtige Methoden: Erzeugt eine Checkbox mit Text Erzeugt eine Checkbox mit Text und Icon Fügt einen ActionListener hinzu ItemListener removeitemlistener() Fügt einen ActionListener hinzu JCheckBox(String, boolean) JCheckBox(String, Icon, boolean) additemlistener(itemlistener) Die zuvor beschriebenen Methoden des Buttons stehen ebenfalls zur Verfügung. Zwei mögliche Events: ItemEvent und ActionEvent Der ItemListener ist dem ActionListener vorzuziehen, da man leicht den Status der Checkbox abfragen kann Peter Merz Einführung in JAVA 89

90 import javax.swing. ; import java.awt. ; import java.awt.event. ; public class CheckBoxExample implements ItemListener { public void itemstatechanged(itemevent e) { if ( e.getstatechange() == ItemEvent.DESELECTED) System.out.println( CheckBox ist deaktiviert ); else System.out.println( CheckBox ist aktiviert ); public static void main(string [] args) { JFrame frame = new JFrame( SwingExample2 ); // Erzeugt ein Fenster Container contentpane = frame.getcontentpane(); JCheckBox checkbox = new JCheckBox( Beispiel Checkbox ); checkbox.additemlistener(new CheckBoxExample()); // Listener! contentpane.add(checkbox); // Fuegt button hinzu // Beenden des Programmes bei Schliessen des Fensters: frame.setdefaultcloseoperation(jframe.exit ON CLOSE); frame.pack(); // Anordnung der Inhalte des Frames frame.setvisible(true ); // Dartstellung auf dem Bildschirm Peter Merz Einführung in JAVA 90

91 Verwendung von JRadioButton und ButtonGroup: Wichtige Methoden: JRadioButton(String, boolean) Erzeugt einen RadioButton mit Text JRadioButton(String, Icon, boolean) Erzeugt einen RadioButton mit Text und Icon ButtonGroup() add(abstractbutton) remove(abstractbutton) Erzeugt ButtonGroup-Instanz Zufügen eines (Radio)Button zur ButtonGroup Entfernen eines Button aus der ButtonGroup Die zuvor beschriebenen Methoden des Buttons stehen ebenfalls zur Verfügung. Die ButtonGroup stellt sicher, das immer genau ein RadioButton aktiv ist ActionListener werden verwendet, um zu ermitteln welcher Button aktiviert wurde. Peter Merz Einführung in JAVA 91

92 public class RadioButtonExample implements ActionListener { public void actionperformed(actionevent e) { System.out.println( Button pressed, Action: + e.getactioncommand()); public static void main(string [] args) { RadioButtonExample buttonexample = new RadioButtonExample(); JFrame frame = new JFrame( Transportmittel ); // Erzeugt ein Fenster Container contentpane = frame.getcontentpane(); ButtonGroup buttongroup = new ButtonGroup(); JRadioButton button = new JRadioButton( Auto, true); button.addactionlistener(buttonexample); // Listener! button.setactioncommand( auto ); buttongroup.add(button); contentpane.add(button, BorderLayout.NORTH); // Fuegt button hinzu button = new JRadioButton( Zug ); button.addactionlistener(buttonexample); // Listener! button.setactioncommand( zug ); buttongroup.add(button); contentpane.add(button, BorderLayout.SOUTH); // Fuegt button hinzu // Beenden des Programmes bei Schliessen des Fensters: frame.setdefaultcloseoperation(jframe.exit ON CLOSE); frame.pack(); // Anordnung der Inhalte des Frames frame.setvisible(true ); // Dartstellung auf dem Bildschirm Peter Merz Einführung in JAVA 92

93 Verwendung von JComboBox: Wichtige Methoden: Erzeugt eine Combobox Fügt einen Eintrag hinzu void insertitemat(object, int) Fügt einen Eintrag an einer bestimmten Stelle hinzu Object getitemat(int) Liefert einen Eintrag an einer bestimmten Position Object getselecteditem() Liefert einen selektierten Eintrag void removeallitems() Entfernt Einträge JComboBox(Object[]) void additem(object) void removeitemat(int) void removeitem(object) int getitemcount() Liefert Anzahl der Einträge Mit ActionListener n kann die Auswahl bestimmt werden. Peter Merz Einführung in JAVA 93

94 import javax.swing. ; import java.awt. ; import java.awt.event. ; public class ComboBoxExample implements ActionListener { public void actionperformed(actionevent e) { JComboBox cb = (JComboBox)e.getSource(); String selected = ( String)cb.getSelectedItem(); System.out.println( ComboBox Auswahl: + selected); public static void main(string [] args) { JFrame frame = new JFrame( SwingExample2 ); // Erzeugt ein Fenster Container contentpane = frame.getcontentpane(); String [] liste = { Rot, Gelb, Blau, Schwarz ; JComboBox combobox = new JComboBox(liste); combobox.addactionlistener(new ComboBoxExample()); // Listener! contentpane.add(combobox, BorderLayout.CENTER); // Fuegt button hinzu // Beenden des Programmes bei Schliessen des Fensters: frame.setdefaultcloseoperation(jframe.exit ON CLOSE); frame.pack(); // Anordnung der Inhalte des Frames frame.setvisible(true ); // Dartstellung auf dem Bildschirm Peter Merz Einführung in JAVA 94

95 Verwendung von JList: Wichtige Methoden: JList() Erzeugt eine List JList(Object[]) Erzeugt eine List void setlistdata(object[]) Liste mit Objekten füllen void setlistdata(vector) Liste mit Objekten füllen addlistselectionlistener(listselectionlistener) fügt Listener hinzu int getselectedindex() Liefert den Index des selektierten Objektes int[] getselectedindices() Liefert die Indices der selektierten Objekte Object getselectedvalue() Liefert das selektierte Objekt Object[] getselectedvalues() Liefert die selektierten Objekte int getselectionmode() Liefert den Selektionsmodus: SINGLE SELECTION, SINGLE INTERVAL SELECTION, MULTIPLE INTERVAL SELECTION Peter Merz Einführung in JAVA 95

96 public class ListExample implements ListSelectionListener { public void valuechanged(listselectionevent e) { if ( e.getvalueisadjusting ()) return; JList list = ( JList )e.getsource(); if (! list.isselectionempty()) { String selected = ( String) list.getselectedvalue(); System.out.println( List Auswahl: + selected); public static void main(string [] args) { JFrame frame = new JFrame( SwingExample2 ); // Erzeugt ein Fenster Container contentpane = frame.getcontentpane(); String [] liste = { Rot, Gelb, Blau, Schwarz ; JList list = new JList( liste ); list.setselectionmode(listselectionmodel.single SELECTION); list.addlistselectionlistener(new ListExample()); // Listener! contentpane.add(list, BorderLayout.CENTER); // Fuegt button hinzu // Beenden des Programmes bei Schliessen des Fensters: frame.setdefaultcloseoperation(jframe.exit ON CLOSE); frame.pack(); // Anordnung der Inhalte des Frames frame.setvisible(true ); // Dartstellung auf dem Bildschirm Peter Merz Einführung in JAVA 96

97 Verwendung von JSlider: Wichtige Methoden: JSlider() Erzeugt ein JSlider-Objekt JSlider(int min, int max, int value) Erzeugt ein Slider mit vorgegebenem Wertebereich und einer Voreinstellung (value) setvalue(int) Setzt den Wert (Position) des Sliders setminimum(int) Setzt Minimal-Wert setmaximum(int) Setzt Maxima-Wert setpaintticks(boolean) Aktiviert das Zeichnen von Markierungen setmajortickspacing(int) Abstand der Hauptmarkierungen setminortickspacing(int) Abstand der Untermarkierungen setpaintlabels(boolean) Aktiviert das Zeichnen von Beschriftungen Zu jeder set-methode gibt es auch eine get-methode! ChangeListener für das Überprüfen einer Änderung Peter Merz Einführung in JAVA 97

98 public class SliderExample implements ChangeListener { public void statechanged(changeevent e) { JSlider slider = ( JSlider)e.getSource(); if (! slider.getvalueisadjusting()) { int value = slider.getvalue(); System.out.println( Slider Wert: + value); public static void main(string [] args) { JFrame frame = new JFrame( SwingExample2 ); // Erzeugt ein Fenster Container contentpane = frame.getcontentpane(); JSlider slider = new JSlider(0, 100); slider.setmajortickspacing(20); slider.setminortickspacing(10); slider.setpaintticks(true); slider.setpaintlabels(true); slider.addchangelistener(new SliderExample()); // Listener! contentpane.add(slider, BorderLayout.CENTER); // Fuegt button hinzu // Beenden des Programmes bei Schliessen des Fensters: frame.setdefaultcloseoperation(jframe.exit ON CLOSE); frame.pack(); // Anordnung der Inhalte des Frames frame.setvisible(true ); // Dartstellung auf dem Bildschirm Peter Merz Einführung in JAVA 98

99 Verwendung von JTextField: Wichtige Methoden: Erzeugt ein leeres TextField Erzeugt ein leeres TextField mit Inhalt Erzeugt ein leeres TextField mit Inhalt und vorgegebener Spaltenanzahl Setzt den Text im TextField Aktiviert die Editierbarkeit des TextFeldes Legt Anzahl der Spalten fest Wählt horizontales Aligmnent Fügt ActionListener hinzu removeactionlistener(actionlistener) Entfernt ActionListener JTextField() JTextField(String) JTextField(String, int) settext(string) seteditable(boolean) setcolumns(int) sethorizontalalignment(int) addactionlistener(actionlistener) Zu jeder get-methode gibt es eine set-methode Peter Merz Einführung in JAVA 99

100 public class TextFieldExample implements ActionListener { public void actionperformed(actionevent e) { if ( e.getactioncommand().equals( text )) { JTextField textfield = ( JTextField)e.getSource(); System.out.println( TextField : + textfield.gettext ()); textfield. selectall (); public static void main(string [] args) { JFrame frame = new JFrame( TextFieldExample ); // Erzeugt ein Fenster Container contentpane = frame.getcontentpane(); JTextField textfield = new JTextField( irgendein text, 30); textfield.addactionlistener(new TextFieldExample()); // Listener! textfield.setactioncommand( text ); contentpane.add(textfield, BorderLayout.CENTER); // Beenden des Programmes bei Schliessen des Fensters: frame.setdefaultcloseoperation(jframe.exit ON CLOSE); frame.pack(); // Anordnung der Inhalte des Frames frame.setvisible(true ); // Dartstellung auf dem Bildschirm Peter Merz Einführung in JAVA 100

101 Weitere Möglichkeiten der Texteingabe/Ausgabe: JPasswordField: Wie JTextField, nur werden die eingegebenen Zeichen als ausgegeben! JTextArea: Erlaubt Darstellung von mehrzeiligem Text! JTextPane: Erlaubt Darstellung von mehrzeiligem Text in unterschiedlichen Fonts/Farben! Peter Merz Einführung in JAVA 101

Swing Lernen am Code Teil 1

Swing Lernen am Code Teil 1 Swing Lernen am Code Teil 1 Swing Fenster erzeugen import java.awt.* import java.awt.event.* import javax.swing.* class SwingDemo{ static JFrame Fenster; public static void main(string[] args){ } } Fenster

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

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

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

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

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane Hochschule Harz Programmierung2 Tutorial 04: FB Automatisierung und Informatik Dipl.-Inf., Dipl.-Ing. (FH) M. Wilhelm Programmierung 2 für MI / WI Thema: Swing, JSplitPane und I/O Versuchsziele Kenntnisse

Mehr

Swing :Komponenten I (Teil 2)

Swing :Komponenten I (Teil 2) l Bei Swing handelt es sich um eine Programmierschnittstelle und Grafikbibliothek zum Programmieren von grafischen Benutzeroberflächen l Swing stellt eine Menge von Klassen zur Verfügung l Swing wurde

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

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

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung Aufgabe Editor package BA.GUI.Swing; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.logging.level; import java.util.logging.logger;

Mehr

Programmieren I. Kapitel 15. Ein und Ausgabe

Programmieren I. Kapitel 15. Ein und Ausgabe Programmieren I Kapitel 15. Ein und Ausgabe Kapitel 15: Ein und Ausgabe Ziel: einen kleinen Einblick in die vielfältigen IO Klassen geben Grober Überblick Klasse File zur Verwaltung von Dateien Random

Mehr

JAVA KURS COLLECTION

JAVA KURS COLLECTION JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)

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

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff Java Schulung Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen Prof. Dr. Nikolaus Wulff Collections in Java 2 Java 2 Collections: http://java.sun.com/products/jdk/1.2/docs/guide/collections/index.html

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

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

2A Basistechniken: Weitere Aufgaben

2A Basistechniken: Weitere Aufgaben 2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen

Mehr

Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster

Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster Kap. 35 Swing: Grundlagen Kap. 36.1 Swing: Hauptfenster by Ali Bastan Gliederung Grundlagen von Swing 1. Kurze Einleitung 2. Warum Swing, wenn es das AWT gibt? 3. Was ist Swing? 4. Merkmale von Swing 5.

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 in Java

GUI Programmierung in Java vs und niemals mischen! Daher muss man sich für eine Klasse entscheiden 1 (Abstract Window Toolkit) schwergewichtige Alle Elemente werden vom Betriebssytem gemalt sehen aus wie alle anderen Programme auf

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

NTB Druckdatum: 01.04.13 -

NTB Druckdatum: 01.04.13 - AWT UND SWING AWT = abstract windowing toolkit Bausteine Eigenes Fenster Programmcode steht nicht im Main, sondern in einer separaten Klasse extends JFrame JWindow selbstständiges Fenster, ohne Rahmen

Mehr

Graphische Benutzungsoberflächen

Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen (graphical user interfaces, GUI) dienen zur interaktiven Bedienung von Programmen, Ein- und Ausgabe mit graphischen Techniken und visuellen

Mehr

Programmieren 2 Selbststudium Semesterwoche 6

Programmieren 2 Selbststudium Semesterwoche 6 Programmieren 2 Selbststudium Semesterwoche 6 1. Datenströme (Basis: Handout PRG2_SW6_OOP) 1. Gehen Sie nochmals die Kontrollfragen A durch. A.1. Ein JavaProgramm liest Daten aus einem???strom. InputStream

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Toolbar 1. JToolBar 2. Menü 1. JMenuBar 2. JMenu 3. JMenuItem 4. KeyStroke 5. Beispiel JMenuDemo1 6. JCheckBoxMenuItem 7. JRadioButtonMenuItem 8. Beispiel JMenuDemo2 9. JPopupMenu 10. Beispiel

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

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

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Java Projekt: Tic Tac Toe + GUI

Java Projekt: Tic Tac Toe + GUI Java Projekt: Tic Tac Toe + GUI Rechnerpraktikum aus Programmierung im WS 2005/06 unter der Leitung von Dr. Michael Hahsler Tadeh Amirian (h0253821) 10.01.2006 1) Problemdefinition Beim TicTacToe Spiel

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Drag and Drop (DnD) 1. Transfer-Mechanismus 2. Transfer-Support 3. Cursor-Symbole 4. Einführendes Beispiel 5. Komponenten DnD-fähig machen 6. Standard DnD-Verhalten ändern Folie 1 Lernziele Sie

Mehr

Grundkonzepte java.util.list

Grundkonzepte java.util.list Grundkonzepte java.util.list Eine List ist eine Spezialisierung einer allgemeinen Ansammlung (Collection): Lineare Ordnung ist definiert Zugriff über Rang oder Position Volle Kontrolle wo eingefügt bzw.

Mehr

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

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

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

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

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

188.154 Einführung in die Programmierung für Wirtschaftsinformatik Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

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

http://www.tutego.com/ Schieberegler und analoge Anzeigen

http://www.tutego.com/ Schieberegler und analoge Anzeigen http://www.tutego.com/ Schieberegler und analoge Anzeigen http://www.tutego.com/ JScrollBar Schieberegler Unter Swing ersetzt javax.swing.jscrollbardie Klasse java.awt.scrollbar. Direkt wird die Klasse

Mehr

Hilfe zur Dokumentenverwaltung

Hilfe zur Dokumentenverwaltung Hilfe zur Dokumentenverwaltung Die Dokumentenverwaltung von Coffee-CRM ist sehr mächtig und umfangreich, aber keine Angst die Bedienung ist kinderleicht. Im Gegensatz zur Foto Galeria können Dokumente

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

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

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

7. Pakete Grundlagen der Programmierung 1 (Java)

7. Pakete Grundlagen der Programmierung 1 (Java) 7. Pakete Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 29. November 2005 Einordnung im Kontext der Vorlesung 1.

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Stand FTE2 Anfang 4. Semester plus Projekt Multiuhren_Thread Ich gehe im Hinblick auf Klassenarbeiten und der Abschlussprüfung davon aus, dass Sie das Skript OOP JAVA2 durchgearbeitet haben. Wir haben

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung 25.01.2007 Wintersemester 2006/2007 Computerlinguistik, Campus DU Überblick Seite 2 Datenströme: Ein und Ausgabe von Daten Java Collections Framework Eingabe/Ausgabe Seite 3 Lesen, Schreiben

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

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

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

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

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009.

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2009 1 / 30 2 / 30 JButton, JCheckBox, JRadioButton In Swing existieren drei wesentliche Klassen für Schaltflächen: JButton für normale

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

ADT: Java Collections und ArrayList

ADT: Java Collections und ArrayList ADT: Java Collections und ArrayList Überblick der Klassen Object File Collections Map List Set ArrayList LinkedList SortedSet HashSet SortedSet Methode ArrayList Klasse I Beschreibung void add(int position,

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

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Visio 2013. Grundlagen. Linda York. 1. Ausgabe, Oktober 2013

Visio 2013. Grundlagen. Linda York. 1. Ausgabe, Oktober 2013 Visio 2013 Linda York 1. Ausgabe, Oktober 2013 Grundlagen V2013 2 Visio 2013 - Grundlagen 2 Einfache Zeichnungen erstellen In diesem Kapitel erfahren Sie wie Sie Shapes einfügen, kopieren und löschen was

Mehr

Kurzreferenz für Java-Klassen und SML

Kurzreferenz für Java-Klassen und SML Kurzreferenz für Java-Klassen und SML Dieses Dokument erhalten Sie auch als Anlage zur Klausur! Stand: 9. Juli 2008 1 Java-Klassenreferenz Anmerkungen: In den folgenden Beschreibungen sind die Vererbungsbeziehungen

Mehr

Mensch-Maschine-Interaktion

Mensch-Maschine-Interaktion Universität Dortmund, Fachbereich Informatik Peter Bollweg, OH16 E08, bollweg@ls7.cs.uni-dortmund.de, 6328 Constantin Timm, OH16 E06, timm@ls12.cs.uni-dortmund.de, 6144 Christian Asche Dortmund, 19. Oktober

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

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 26. April 2013 Programmieren II 10. Übungsblatt Hinweis: Insgesamt werden in diesem Semester fünf

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

Die Dateiablage Der Weg zur Dateiablage

Die Dateiablage Der Weg zur Dateiablage Die Dateiablage In Ihrem Privatbereich haben Sie die Möglichkeit, Dateien verschiedener Formate abzulegen, zu sortieren, zu archivieren und in andere Dateiablagen der Plattform zu kopieren. In den Gruppen

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

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

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 15 Java API Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), FAKULTÄT FÜR INFORMATIK

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

Mehr

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

von Anja Austermann Drag and Drop

von Anja Austermann Drag and Drop von Anja Austermann Drag and Drop »Drag and Drop«ist die Bezeichnung für den Datentransfer zwischen unterschiedlichen Anwendungen mit grafischer Benutzeroberfläche. Zur Zeit arbeitet Drag and Drop in Java

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

Info B VL 14: Java Collections/Reflections

Info B VL 14: Java Collections/Reflections Info B VL 14: Java Collections/Reflections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 14: Java Collections/Reflections

Mehr

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung 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

Programmieren mit Swing

Programmieren mit Swing Jürgen Schlierf Rudolf Weber Programmieren mit Swing Einfuhrung in die Programmierung mit den Swing-Klassen in Java 2 HANSER Carl Hanser Verlag München Wien Inhaltsverzeichnis 1 Einleitung 1 1.1 Von Java

Mehr

Hilfe zur Urlaubsplanung und Zeiterfassung

Hilfe zur Urlaubsplanung und Zeiterfassung Hilfe zur Urlaubsplanung und Zeiterfassung Urlaubs- und Arbeitsplanung: Mit der Urlaubs- und Arbeitsplanung kann jeder Mitarbeiter in Coffee seine Zeiten eintragen. Die Eintragung kann mit dem Status anfragen,

Mehr

Assoziation und Aggregation

Assoziation und Aggregation Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung 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

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager

Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager Homepage-Manager Navigation Home Der Homepage-Manager bietet die Möglichkeit im Startmenü unter dem Punkt Home einfach und schnell

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung von BlueJ. Klassenanzeige Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument

Mehr

Teil V. Generics und Kollektionen in Java

Teil V. Generics und Kollektionen in Java Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für

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

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer 144

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer   144 Rechtsbelehrung Dieser Foliensatz ist urheberrechtlich geschützt. Änderungen an den Folien sind untersagt. Ausschließlich eine nicht-kommerzielle Nutzung ist kostenfrei. Andernfalls wird eine Gebühr fällig.

Mehr

Algorithmen und Datenstrukturen in Java. 2007 Jiri Spale, Algorithmen und Datenstrukturen in Java 1

Algorithmen und Datenstrukturen in Java. 2007 Jiri Spale, Algorithmen und Datenstrukturen in Java 1 Algorithmen und Datenstrukturen in Java 2007 Jiri Spale, Algorithmen und Datenstrukturen in Java 1 Enumeratoren und Iteratoren Daten üblich gespeichert in: - Arrays, verketteten Listen, Bäumen, Geläufige

Mehr