Einführung in JAVA - Teil II
|
|
- Benedict Schuler
- vor 8 Jahren
- Abrufe
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 Fenster erzeugen import java.awt.* import java.awt.event.* import javax.swing.* class SwingDemo{ static JFrame Fenster; public static void main(string[] args){ } } Fenster
MehrZentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)
1 JAVA für Bauingenieure Alexander Karakas SS 2008 Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 21.05.2008 2 Was ist ein(e) GUI? GUI = Graphical User Interface = Graphische
MehrGUI Programmierung mit JAVA Swing
GUI Programmierung mit JAVA Swing Komponenten Layout Event Handling Imaging 2001 Thomas Weiler 1 JAVA Swing Bibliothek zur Erstellung grafischer Benutzerschnittstellen in JAVA Bietet Klassen für grafische
MehrJava 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]...
MehrJava I Vorlesung 11 Graphische Oberflächen mit Swing
Java I Vorlesung 11 Graphische Oberflächen mit Swing 5.7.2004 Swing Komponenten Layout-Manager Events Swing und Threads Die Java-Plattform 2 Die Java-Plattform 3 "Hello World" in Swing HelloWorldS.java
MehrTutorial04: 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
MehrSwing :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
MehrHochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr. 40301 Seite 1 von 5. Teil 2: Aufgaben
Hochschule der Medien Prof Uwe Schulz 14 Juli 2010 Klausur Informatik, EDV-Nr 40301 Seite 1 von 5 Name: Matr Nr: Teil 2: Aufgaben Hilfsmittel: alle außer tragbare Computer und Nachbar Bearbeitungszeit:
MehrProgrammierkurs 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
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen
1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung
MehrDHBW 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;
MehrProgrammieren 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
MehrJAVA 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)
MehrSwing : Komponeneten I (Teil 1) Was ist Swing?
Was ist Swing? 1 Unterschied zu AWT (Abstract window Toolkit) Zusätzliche Komponenten von Swing,die zu Oberflächenerzeugung genutzt werden können: Keyboard Accelerators, also Tastenkombination zur Steuerung
MehrEinfü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
MehrJava 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
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:
MehrEinstieg in die Informatik mit Java
1 / 14 Einstieg in die Informatik mit Java Swing Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 14 1 Einführendes Beispiel 2 Eigenschaften von Swing 3 Typisches Swing-Applet
Mehr2A 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
MehrKap. 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.
MehrObjektorientierte Software-Entwicklung
Objektorientierte Software-Entwicklung Priv.-Doz. Dr. Rolf Hennicker 08.01.2003 AWT und Swing AWT (Abstract Window Toolkit) und Swing 2 AWT (Abstract Window Toolkit) und Swing AWT und Swing bieten eine
MehrGUI Programmierung 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
MehrObjektorientierte Programmierung
Objektorientierte Programmierung Exkurs: Graphische Benutzeroberflächen FH Braunschweig/Wolfenbüttel Sommersemester 2009 1 / 22 Gliederung I Wiederholung Klassen, Objektorientierung (Kapitel 10,11) Exkurs:
MehrNTB 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
MehrGraphische 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
MehrProgrammieren 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
MehrProgrammieren 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
MehrAbteilung 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 !" Ereignisbehandlung in awt/swing führt Liste interessierter Behandler GUI- Komponente (z.b. Knopf) wird eingetragen trägt ein Ereigniskanal fertigt ab neuer Behandler
MehrEinführung in Swing. Graphical User Interface
Einführung in Swing Ho Ngoc Duc IFIS - Universität zu Lübeck Graphical User Interface Ein GUI-Programm beinhaltet: Graphische Darstellung der Anwendungsdaten und Interaktionsmöglichkeiten in Fenstern Steuerung
MehrDas 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
MehrJava 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
MehrMit 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
MehrAbteilung 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
MehrGrundkonzepte 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.
MehrEinfü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.
MehrFunktionale und Objekt-Orientierte Programmierkonzepte
Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1
MehrSoftware 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
MehrProgrammieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.
Programmieren II Dr. Klaus Höppner Hochschule Darmstadt SS 2008 1 / 22 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface,
Mehr188.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
MehrDistributed 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
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 02: Streams filtern, Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Datenströme (Streams) Filtern FilterWriter, - Reader 2.
Mehrhttp://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
MehrHilfe 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
MehrJavakurs für Fortgeschrittene
Javakurs für Fortgeschrittene Einheit 03: Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in GUI-Programmierung Motivation Grundlagen von Swing Praxis: UI für
MehrEinfü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
MehrGrundlagen der Programmierung APPLETS
Grundlagen der Programmierung APPLETS Inhalt dieser Einheit Java-Applets: Java-Applets Vor- und Nachteile Sicherheitskonzepte Methoden Einbetten in HTML Graphical User Interface 2 Java Applets Applets
Mehr7. 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.
MehrAK-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
MehrVorlesung 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
MehrEinführung in GUI-Programmierung. javax.swing
Einführung in GUI-Programmierung javax.swing GUI Graphical User Interface ( Grafische Benutzerschnittstelle ) Anschaulichere und leichtere Möglichkeit zur Dateneingabe und Kontrolle von Programmen Stellt
MehrJava 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
MehrGrafische Benutzeroberflächen mit Swing
Grafische Benutzeroberflächen mit Swing KW 30, Zentralübung Informatik II 2006-07-24 Klausur: Stichpunkte 1. Auswertung System.out.println("abc" instanceof String); Ergebnis von instanceof ist ein boolean,
MehrGUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik
GUI-Programmierung mit Java Teil I Unterlagen zum Modul OOP mit Java V 3.0 2007 by WBR1/BFH-TI 2011 by MOU2/BFH-TI GUI-Programmierung V3.0 2011 by WBR1&MOU2/BFH-TI Lernziele Die Kursteilnehmer sind in
MehrKlausur 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-
MehrJButton, 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
MehrObjektorientierte 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/
MehrEinfü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
MehrADT: 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,
MehrObjektorientierte Softwareentwicklung
Objektorientierte Softwareentwicklung Exkurs GUI-Programmierung mit Java-SWING Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Für Hinweise und konstruktive Kritik
MehrObjektorientierte 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
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
MehrDrei-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
MehrVisio 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
MehrKurzreferenz 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
MehrMensch-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
MehrGUI Programmierung mit javax.swing
java.awt Swing Komponenten Layout Manager Ausblick GUI Programmierung mit University basierend auf Folien von Dr. Beatrice Amrhein (Bern), 19. Juni 2006 java.awt Swing Komponenten Layout Manager Ausblick
MehrWeb-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.........................................
MehrInstitut 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
MehrInstitut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke
GUIs mit Swing Markus Reschke 28.08.2014 Beispiel: Ein einfaches GUI-Programm Siehe Painter.java Markus Reschke GUIs mit Swing 2 GUI Frameworks in Java AWT war das erste GUI-Framework, welches mit Java
MehrDie 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
MehrAlgorithmen & 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
MehrGroß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,
MehrVerhindert, 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:
MehrGrafische Benutzeroberflächen
Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Aufgabe Ein Benutzer soll zwei Zahlen in ein Programm
MehrProgrammieren 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
MehrVorlesung 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
MehrStudentische 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
MehrEinstieg 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
MehrInstitut 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
MehrSession 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
Mehrvon 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
MehrEinführung in GUI-Programmierung. javax.swing
Einführung in GUI-Programmierung javax.swing GUI Graphical User Interface ( Grafische Benutzerschnittstelle ) Anschaulichere und leichtere Möglichkeit zur Dateneingabe und Kontrolle von Programmen Stellt
MehrInfo 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
MehrArrays 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"
MehrProgrammieren 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
MehrHilfe 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,
MehrAssoziation 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
MehrEinfache 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"
MehrJava 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 CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen
MehrAnleitung 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
MehrBedienung 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
MehrTeil 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
MehrEAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ
EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,
MehrRechtsbelehrung. 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.
MehrAlgorithmen 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