Graphische Nutzerschnittstellen

Größe: px
Ab Seite anzeigen:

Download "Graphische Nutzerschnittstellen"

Transkript

1 Graphische Nutzerschnittstellen Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik Raum Tel /

2 Inhalt 1. Einführung, Literatur, Begriffe 2. Architektur eines Fenstersystems 3. Java-Dialog (Dialog/SDI/MDI) 4. Grafik in Java 5. Benutzeroberfläche (Layout, Dialog, RDI, GUI-Elemente) 6. Design Pattern (Framework, Mehrschicht Anwendung) 7. Testroutinen (JUnit) 8. JDBC (Datenbankanbindung) 9. Threads 2

3 Benutzeroberflächen: Die Java Klassenbibliothek Regelmäßige Erweiterung und Veränderung mit den Versionen des JDK Teile der Bibliothek werden in der Dokumentation zum JDK als packages bezeichnet Objektorientierte Vorteile der Bibliothek Verfeinerung der allgemeine Klassen durch Vererbung der Methoden innerhalb eines package an spezielle Klassen Bereitstellung generischer Datenstrukturen (Templates) 3

4 Die Java Klassenbibliothek Beispiele java.lang: Sprachunterstützung (Threads, String) java.util: Hilfeklassen, allgemeine Datenstrukturen (Stack, Vector) java.io: Ein/Ausgabe-Klassen (Dateien, Streams) java.nio: Ein/Ausgabe-Klassen (Neue Variante) java.nio2: Ein/Ausgabe-Klassen (JDK 7) java.net: Sockets, URL java.applets, java.awt: Java Windows Toolkit Erweiterungen (Auswahl) java.swing: AWT mit anpassbaren Look & Feel ) speech: Sprachein- und Sprachausgabe JDBC: Datenbankanbindung Beans: wiederverwendbare Komponenten JMF: Java Media Foundation 4

5 Java: Exception public class exception1 { public static void main(string args[]) { int j,k; j=0; k=3 / j; // main 5

6 Java: Exception D:\HS-Harz\GUI>java exception1 Exception in thread "main" java.lang.arithmeticexception: / by zero at exception1.main(exception1.java:8) D:\HS-Harz\GUI> 6

7 Java: Exception Ein perfektes Programm mit perfekten Anwendern benötigt keine Fehlerbehandlung. Alle Daten werden korrekt eingegeben, jede Datei existiert und alle Module sind richtig programmiert. Reale Welt: Beim Absturz eines Programms entstehen: Datenverluste Unstimmigkeiten in einer Datenbank Neueingaben Ärger des Anwenders Abhilfe: Benachrichtigung an den Anwender Sicherung der Daten Sicheres Beenden des Programms 7

8 Java: Exception Definition: public class Exception extends Throwable The class Exception and its subclasses are a form of Throwable that indicates conditions that a reasonable application might want to catch. Since: JDK1.0 Java benutzt für die Fehlerbehandlung ein error trapping bzw. exception handling (Delphi, C++). Diese Fehlerbehandlung ist weit flexibler als die VB Basicvariante On error goto. 8

9 Java: Exception Ursachen für eine Exception: Fehlerhafte Eingabe (Numerische Eingabe, URL) Gerätfehler (Drucker, Webseite, Diskette) Physikalische Grenzen (mangelnder Speicher, Freier Speicherplatz) Programmierfehler (Arrayindex, Stackfehler, Overflow, Underflow) Exception: Bei einer Exception wird die aktuelle Prozedur sofort verlassen es wird ein Exceptionobjekt erzeugt es wird kein Returncode erzeugt der Aufrufcode wird nicht weiterabgearbeitet es beginnt die Suche nach einem exception handler, der für diese Exception zuständig ist 9

10 Standard Runtime Exceptions: ArithmeticException: ArrayStoreException: ClassCastException: IllegalArgumentException: IllegalThreadStateException: NumberFormatException: Java: Exception-Arten An exceptional arithmetic situation has arisen, such as an integer division ( ) operation with a zero divisor. An attempt has been made to store into an array component a value whose class is not assignment compatible with the component type of the array ( 10.10, ). An attempt has been made to cast ( 5.4, 15.15) a reference to an object to an inappropriate type. A method was passed an invalid or inappropriate argument or invoked on an inappropriate object. Subclasses of this class include: A thread was not in an appropriate state for a requested operation. An attempt was made to convert a String to a value of a numeric type, but the String did not have an appropriate format. IllegalMonitorStateException: A thread has attempted to wait on ( , , ) or notify ( , ) other threads waiting on an object that it has not locked. IndexOutOfBoundsException: Either an index of some sort (such as to an array, a string, or a vector) or a subrange, specified either by two index values or by an index and a length, was out of range. 10

11 Package java: Java: Exception java.io.ioexception: java.io.eofexception: java.io.filenotfoundexception: java.io.interruptedioexception: A requested I/O operation could not be completed normally. Subclasses of this class include: End of file has been encountered before normal completion of an input operation. A file with the name specified by a file name string or path was not found within the file system. The current thread was waiting for completion of an I/O operation, and another thread has interrupted the current thread, using the interrupt method of class Thread ( ). java.io.utfdataformatexception: A requested conversion of a string to or from Java modified UTF-8 format could not be completed ( , ) because the string was too long or because the purported UTF-8 data was not the result of encoding a Unicode string into UTF-8. Standard Runtime Exceptions: NullPointerException: An attempt was made to use a null reference in a case where an object reference was required. 11

12 Java: Exception (Anfangsbeispiel) import java.io.*; public class exception1 { public static void main(string argv[]) { int j,k; j=0; k=3 / j; // main 12

13 Java: Exception (interne Abfrage) import java.io.*; public class exception2 { public static void main(string argv[]) { int j,k; j=0; try { // Excecption Block k=3 / j; catch (ArithmeticException f) { System.err.println(" ArithmeticException : " + f); // main Kein Absturz für den Anwender exception2 13

14 Java: Exception (externe Abfrage) import java.io.*; public class exception3 { public static double loaddouble(string sfilename) { // hier könnte ein Fehler auftreten return 1.0; // Platzhalter public static void main(string argv[]) { double d; d = loaddouble("c:\\1.dat"); // main exception3 14

15 Java: Exception (externe Abfrage) import java.io.*; public class exception4 { public static double loaddouble(string sfilename) throws IOException { return 1.0; public static void main(string argv[]) { double d; d = loaddouble("c:\\1.dat"); // Zwang zur Benutzung einer Exception // main Compilermeldung: Nicht bekannte java.io.ioexception; muss abgefangen werden oder zum Auslösen deklariert werden Exception3-4 15

16 Java: Exception import java.io.*; public class exception4 { public static double loaddouble(string sfilename) throws IOException { return 1.23; public static void main(string argv[]) { double d; try { d = loaddouble("c:\\1.dat"); catch (IOException f) { System.err.println("IOException: " + f); // main // class Exception4 16

17 Java: Throw Exception public static double loaddouble(string sfilename) throws IOException { int i=1; if (i==1) throw new EOFException("Modul loaddouble (Header hat falsche Version)"); return 1.234; // loaddouble public static void main(string argv[]) { double d; try { d = loaddouble("c:\\1.dat"); catch (EOFException f) { System.err.println("main: " + f); catch (IOException f) { System.err.println("main: " + f); // main Exception5 17

18 Java: Throw Exception Ergebnis: D:\HS-Harz\GUI>java exception5 main: java.io.eofexception: Modul loaddouble (Header) D:\HS-Harz\GUI> 18

19 Java: Eigene Exceptionklasse Exception sind in eine Klassenhierarchie eingebettet. Sie dienen unterschiedlicher Aufgaben. Wünschenswert ist es manchmal, eine eigene Klasse für die Abarbeitung zu definieren. Eigene Hierarchie Debug Informationen 19

20 Java: Eigene Exceptionklasse Definition: class HeaderFalseVersion extends IOException { int version; public HeaderFalseVersion() { super(); public HeaderFalseVersion(String error) { super(error); public HeaderFalseVersion(String error, int version) { super(error); this.version = version; // HeaderFalseVersion 20

21 Beim Auslösen einer Exception wird sofort das jeweilige Modul sofort verlassen. Problem: Java: finally Klausel Lokale Resourcen werden nicht sauber entfernt: Eine Datei ist geöffnet, wird nicht geschlossen Abhilfe: finally Klausel 21

22 Java: finally Klausel Resource resource; try { resource =...; resource.methodthrowsexception(); catch (Exception e) {... finally { resource.close(); 22

23 Java: finally Klausel FileInputStream fin=null; DataInputStream din=null; byte b; try { fin = new FileInputStream( sfilename ); din = new DataInputStream(fin); while ( din.available()>0 ) { b = din.readbyte(); System.out.println((char) (b) ); catch ( FileNotFoundException e ) { System.err.println( "Die Datei ist nicht vorhanden!" ); catch ( IOException e ) { System.err.println( "Schreib-/Leseprobleme!" ); finally { if ( fin!= null ) try { fin.close(); catch ( IOException e ) { e.printstacktrace(); 23

24 Java: finally Klausel void creategrafik(string sfilename) { Graphics g = image.getgraphics(sfilename); try { code mit der Möglichkeit einer Exception catch(ioexception e) { done = false; finally { g.dispose(); // Speicher freigeben 3 Varianten 24

25 Java: finally Klausel void creategrafik(string sfilename) { Graphics g = image.getgraphics(sfilename); try { code mit der Möglichkeit einer Exception catch(filenotfoundexception e) { done = false; catch(eofexception e) { done = true; finally { g.dispose(); // Speicher freigeben 3 Varianten 25

26 Java: finally Klausel void creategrafik(string sfilename) { Graphics g = image.getgraphics(sfilename); try { code mit der Möglichkeit einer Exception catch(ioexception e) { done = false; catch(exception e) { done = true; finally { g.dispose(); // Speicher freigeben 3 Varianten 26

27 Java: Anwendung von Exceptions Vier Regeln: 1) Exception-Handling ersetzt nicht das Testen. Das Auslösen einer Exception kostet sehr viel Zeit. 2) Splitten von Exceptions Wenn überhaupt nur eine try Klammer mit mehreren catch-klauseln. 3) Kein Verstecken von Exceptions Eine catch-anweisung ohne eine Meldung ist nicht sinnvoll. Tritt der Fehler auf, erhält der Anwender keine Mitteilung. 4) Also weiterreichen von Exceptions Das Verstecken einer Exception liefert einfacheren Code. Der Aufrufer sollte aber von der Exception erfahren. Man ist kein Hellseher beim Programmieren. 27

28 Datenverarbeitung in Java Es steht eine Vielzahl von Klassen/Modulen zur Verfügung (58): Eingabeklassen: InputStream ByteArray InputStream File InputStream Filter InputStream Piped InputStream Sequence InputStream StringBuffer InputStream Buffered InputStream Checked InputStream Digest InputStream Inflater InputStream LineNumber InputStream Pushback InputStream gepuffert Filter für Dateinamen GZIP InputStream für Zeichen, Zeichenketten, Objekte, Token mit Pipe-Verfahren ZIP InputStream 28

29 Ausgabe in eine Datei OutputStream ByteArray OutputStream File OutputStream Filter OutputStream Piped OutputStream Checked OutputStream Digest OutputStream Deflater OutputStream PrintStream Data OutputStream Buffered OutputStream GZIP OutputStream ZIP OutputStream gepuffert Filter für Dateinamen für Zeichen, Zeichenketten, Objekte, Token mit Pipe-Verfahren 29

30 Java: Ausgabe in eine Datei Basis aller Ausgaben ist die Klasse OutputStream Weitere Spezifikation durch z.b: FileOutputStream Weitere Spezifikation durch: BufferedOutputStream PrintStream DataOutStream ZIPOutStream CheckedOutStream PipeOutStream RandomAccessFile mit seek 30

31 Java: Ausgabe in eine Datei import java.io.*; public class print1 { public static void main(string argv[]) { try { FileOutputStream Fout = new FileOutputStream("1.dat"); // Druckausgabe in eine ASCII-Datei PrintStream p = new PrintStream(Fout); p.print("hallo"); p.println("hallo"); p.println("hallo Studenten"); p.close(); catch (IOException ee) { System.err.println("IOException: " + ee); // main 31

32 Java: Ausgabe in eine Datei (Double, int) import java.io.*; public class print2 { // Ausgabe ohne Buffer, Ausgabe von Double Zahlen, binäres Format public static void main(string argv[]) { double d; try { FileOutputStream Fout = new FileOutputStream("1.bin"); DataOutputStream Dout = new DataOutputStream(Fout); d = ; Dout.writeDouble(d); d = ; Dout.writeDouble(d); Dout.writeInt(-1234); Dout.close(); catch (IOException e) { System.err.println("IOException: " + e); // main 32

33 Java: Methoden der Klasse DataOutputStream DataOutputStream: writeboolean writebyte (Schreiben einer 8-Bit Vorzeichenzahl) writechar (Schreiben einer 16-Bit vorzeichenlosen Zahl) writedouble (Schreiben einer Double-Zahl) writefloat (Schreiben einer Single-Zahl) writeint (Schreiben einer 32-Bit Vorzeichenzahl) writelong (Schreiben einer 64-Bit Vorzeichenzahl) writeshort (Schreiben einer 16-Bit Vorzeichenzahl) writeutf writechars 33

34 Int-Datentypen in Java byte from -128 to 127 short from to int from to long from to char from '\u0000' to '\uffff, =>, from 0 to

35 Java: Lesen einer ASCII-Datei import java.io.*; import java.net.*; public class read2 { // Exception wird hier in die Definition eingebaut!!!!! // WICHTIG: die Methode readline ist veraltet, siehe read3 public static void main(string argv[]) throws IOException { FileInputStream fin; DataInputStream din; String s; fin = new FileInputStream("c:\\1.dat"); din = new DataInputStream(fin); while ( (s=din.readline())!= null) { System.out.println(s); // main s=din.readline() while ( s!= null) { System.out.println(s); s=din.readline() 35

36 Java: Lesen einer ASCII-Datei (neu) public static void main(string argv[]) throws IOException { FileInputStream fin; InputStreamReader iin; LineNumberReader din; // aktuelle Version zum Einlesen einer ASCII-Datei String sline; try { fin = new FileInputStream("read3.java"); iin = new InputStreamReader(fin); din = new LineNumberReader(iin); while ( din.ready() ) { sline = din.readline(); System.out.println(sLine); catch (IOException e) { System.err.println("IOException: " + e); read3.java 36

37 Java: Lesen einer Binärdatei: read4 import java.io.*; public static void main(string argv[]) throws IOException { FileInputStream fin; DataInputStream din; char ch; byte b; try { fin = new FileInputStream("1.dat"); din = new DataInputStream(fin); while (true) { // eventuell Absturz mit Exception b =din.readbyte(); ch = (char) (b); System.out.println(ch); catch (IOException e) { System.err.println("IOException: " + e); pause(); 37

38 import java.io.*; public class read4 { Java: Lesen einer Binärdatei: read4 private static void read(string sfilename){ FileInputStream fin; DataInputStream din; char ch; byte b; try { fin = new FileInputStream( sfilename ); din = new DataInputStream(fin); while ( din.available()>0 ) { // ohne Fehler b = din.readbyte(); ch = (char) (b); System.out.println(ch); catch (IOException e) { System.err.println("IOException: " + e); 38

39 Java: Lesen einer Binärdatei import java.io.*; // Einlesen aus einer binären Datei, in der int-werte gespeichert wurden public class read4 { private static void read(string sfilename){ int i; try { FileInputStream Fin = new FileInputStream(sFilename); DataInputStream DataIn = new DataInputStream(Fin); i = DataIn.readInt(); System.out.println(i); i = DataIn.readInt(); // Einlesen von int Zahlen System.out.println(i); // Einlesen der Zahlen i = DataIn.readInt(); public static void main(string argv[]) { System.out.println(i); read("1.int"); DataIn.close(); pause(); // main catch (IOException e) { // class 39

40 import java.io.*; Java: Schreiben und Lesen einer Binärdatei // Ausgabe ohne Buffer, Ausgabe von int Zahlen, Einlesen der Zahlen public class readwrite1 { public static void main(string argv[]) { int i; try { FileOutputStream Fout = new FileOutputStream("rw1.int"); DataOutputStream DataOut = new DataOutputStream(Fout); i = 1234; DataOut.writeInt(i); i = 4321; DataOut.writeInt(i); DataOut.writeInt(-1234); DataOut.close(); 40

41 Java: Schreiben und Lesen einer Binärdatei // weiter im Sourcecode FileInputStream Fin = new FileInputStream("rw1.int"); // Einlesen der Dateien DataInputStream DataIn = new DataInputStream(Fin); i = DataIn.readInt(); System.out.println(i); i = DataIn.readInt(); System.out.println(i); i = DataIn.readInt(); System.out.println(i); DataIn.close(); catch (IOException e) { System.err.println("IOException: " + e); System.out.println("Es wurde in die Datei rw1.int geschrieben und gelesen"); System.out.println("Bitte Taste druecken"); pause(); // main 41

42 Java: Methoden der Klasse DataInputStream DataInputStream: readboolean readbyte ( ) Lesen einer 8-Bit Vorzeichenzahl readchar ( ) Lesen einer 16-Bit vorzeichenlosen Zahl readdouble ( ) Lesen einer Double-Zahl readfloat ( ) Lesen einer Single-Zahl readint ( ) Lesen einer 32-Bit Vorzeichenzahl readlong ( ) Lesen einer 64-Bit Vorzeichenzahl readshort ( ) Lesen einer 16-Bit Vorzeichenzahl readutf( ) 42

43 Read/Write mit RandomAccessFile Methoden: int read(byte[] b, int off, int len) boolean readboolean() byte readbyte() char readchar() double readdouble() float readfloat() int readint() String readline() long readlong() short readshort() String readutf() int readunsignedbyte() int readunsignedshort() void setlength(long newlength) int skipbytes(int n) 43

44 Read/Write mit RandomAccessFile Methoden: length Ausgabe der Länge der Datei void seek(long pos) void setlength(long newlength) int skipbytes(int n) void readfully(byte[] b) Reads b.length bytes from this file into the byte array, starting at the current file pointer. void readfully(byte[] b, int off, int len) Reads exactly len bytes from this file into the byte array, starting at the current file pointer. 44

45 Read/Write mit RandomAccessFile Beispiel: private byte[] read(int count, int offset, String sfilename) { RandomAccessFile fin = new RandomAccessFile( sfilename, "r"); if (offset>0) fin.seek(offset); byte [] feld = new byte[count]; int anz = fin.read(feld, 0, count); fin.close(); return feld; 45

46 Int-Datentypen in Java byte from -128 to 127 short from to int from to long from to char from '\u0000' to '\uffff, =>, from 0 to

47 Dialog - Benutzeroberflächen in Java Ein Dialogfenster ist ein Fenster, in dem der Benutzer Daten eingeben kann. Das Fenster mindestens einen Schalter (Ok). Mit Betätigen wird eine Aktion ausgelöst. Beispiel: Meldung 47

48 Beispiele für Dialogfenster Eigenschaften: Titel Aktives Element Schalter Abbruch Schalter Ok Mit Betätigen des Schalters Ok wird eine weitere Aktion ausgeführt. 48

49 Single Dokument Interface Ein SDI-Fenster zeigt Daten in einem Fenster und stellt sie dem Benutzer zur Verfügung. Eigenschaften: Menüleiste Schalterleisten Statuszeile Kein Schalter Ok oder Abbruch 49

50 Single Dokument Interface Beispiele: Calculator Notepad Explorer Spiele Internetbrowser Einfaches Fenster Darstellung eines Textes Zweigeteiltes Fenster Komplexe Darstellung Zweigeteiltes Fenster 50

51 Dialogfenster in Java Ein Dialogfenster besteht aus einem Frame und weiteren grafischen Benutzerelemente zur Eingabe und Ausgabe von Daten. Zum Beenden des Fensters müssen die Schalter Ok und Abbruch vorhanden sein. 51

52 GUI-Elemente in Java (aktive Elemente) JLabel JTextField JSpinner JButton JToggleButton JRadioButton JCheckBox ButtonGroup JComboBox JList JTextArea JTextPane JEditorPane JTable JScrollBar JTree Anzeigefeld einzeiliges Editorfeld einzeiliges Editorfeld mit Drehfeld Schalter (Text, Bild) Schalter (Text, Bild) Element zur Auswahl, korrespondiert mit anderen Element zur Auswahl Umfasst Checkbox, Radiobuttons Aufklappbare Liste Liste Editor, ASCII Editor, RTF, HTM Editor, RTF, HTM Tabelle Scrollbalken Anzeige der Elemente in einem Baum 52

53 GUI-Elemente in Java (Container) JPanel JTabbedPane JScrollPane JSplitPane Box Rahmen Register Speichert GUI-Element, Scroll-Mechanismus Automatischer Aufteiler Vertikal, Horizontal GUI-Elemente in Java (Menüs, Schalter) JMenuBar JPopupMenu JToolBar JOptionPane JColorChooser JFileChooser Speichert einzelne Menüs Lokales Menü Schalterleiste Für einfache Dialogboxen (Klasse Dialog) Farbe Auswahl einer Datei 53

54 Aufbau eines Dialogfenster in Java import javax.swing.*; public class Frame1 extends JFrame { //Frame konstruieren public Frame1() { this.setsize(400, 300); this.settitle("frame1"); public static void main(string[] args) { Frame1 frame = new Frame1(); frame.setvisible(true); Originalframe. Ohne weitere GUI-Elemente 54

55 Programm schließen, ab JDK 1,3 Methode setdefaultcloseoperation DO_NOTHING_ON_CLOSE do not do anything - require the program to handle the operation in the windowclosing method of a registered WindowListener object. HIDE_ON_CLOSE automatically hide the frame after invoking any registered WindowListener objects DISPOSE_ON_CLOSE automatically hide and dispose the frame after invoking any registered WindowListener objects EXIT_ON_CLOSE The exit application default window close operation. If a window has this set as the close operation and is closed in an applet, SecurityException may be thrown. It is recommended you only use this in an application. 55

56 Dialogfenster mittels JFrame Konstruktoren: JFrame() JFrame(String stitle); Methoden: setjmenubar setmaximizedbound setresizable settitle setundecorated(true); // ohne Menüleiste setsize(width, height) setlocation(x,y) Methoden: JLayeredPane getlayeredpane() JRootPane getrootpane() JGlassPane getglasspane() setextendedstate(int state): NORMAL ICONIFIED MAXIMIZED_HORIZ MAXIMIZED_VERT MAXIMIZED_BOTH: JRootPane root = f.getrootpane(); Container content = root.getcontentpane(); 56

57 Top-Level-Container 57

58 Top-Level-Container JFrame, JDialog und JWindow: Enthalten jeweils ein RootPane JRootPane enthält: LayeredPane MenuBar ContentPane (speichert JComponent) GlassPane 58

59 Dialogfenster in Java public class FrameMsg1 extends JFrame { public FrameMsg1() { JLabel label1; // Label Objekt Container container; setsize(400, 300); // Größe label1 = new JLabel("Text"); // Label erzeugen label1.settext("dies ist ein Anzeigetext"); // Labeltext container = this.getcontentpane(); // Container des Fensters container.add(label1, BorderLayout.NORTH); // Element einfügen // create public static void main(string[] args) { FrameMsg1 frame = new FrameMsg1(); frame.setvisible(true); // main 59

60 GUI-Element: JLabel Ein JLabel dient zur Beschriftung von GUI- Elementen. Es kann eine Zeile Text dargestellt werden. Konstruktoren: JLabel() // Leerstring als Text JLabel(Icon image) // Icon als Beschriftung JLabel(Icon image, int horizontalalignment) JLabel(String text) // Label mit Text JLabel(String text, Icon icon, int horizontalalignment) JLabel(String text, int horizontalalignment) 60

61 GUI-Element: JLabel Methoden: void sethorizontalalignment(int alignment) Sets the alignment of the label's contents along the X axis. void sethorizontaltextposition(int textposition) Sets the horizontal position of the label's text, relative to its image. void seticon(icon icon) void settext(string text) void setverticalalignment(int alignment) Sets the alignment of the label's contents along the Y axis. void setverticaltextposition(int textposition) Sets the vertical position of the label's text, relative to its image. void updateui() Notification from the UIFactory that the L&F&F has changed. 61

62 Dialogfenster in Java: Zwei JLabel public class FrameMsg2 extends JFrame { public FrameMsg2() { JLabel label1, label2; Container container; container = this.getcontentpane(); label1 = new JLabel("1. Text"); // Label erzeugen container.add(label1, BorderLayout.NORTH); label2 = new JLabel("2. Text"); // Label erzeugen container.add(label2, BorderLayout.NORTH); // create 62

63 Verbesserte Version (zwei JLabel) public FrameMsg3() { JLabel label1; JLabel label2; Container container; JPanel panel; Ergebnis? container = this.getcontentpane(); panel = new JPanel(); panel.setlayout ( new BorderLayout() ); label1 = new JLabel("1. Text"); // Label erzeugen panel.add(label1, BorderLayout.NORTH ); label2 = new JLabel("2. Text"); // Label erzeugen panel.add(label2, BorderLayout.SOUTH ); // create 63

64 Verbesserte Version (zwei JLabel) public FrameMsg3() { JLabel label1; JLabel label2; Container container; JPanel panel; container = this.getcontentpane(); panel = new JPanel(); panel.setlayout ( new GridLayout(3,1) ); label1 = new JLabel("1. Text"); // Label erzeugen panel.add(label1); label2 = new JLabel("2. Text"); // Label erzeugen panel.add(label2); // create 64

65 Dialogfenster in Java: Zwei JLabel public FrameMsg3() { JLabel label1; JLabel label2; Container container; JPanel panel; container = this.getcontentpane(); panel = new JPanel(); panel.setlayout ( new GridLayout(3,1) ); label1 = new JLabel("1. Text"); // Label erzeugen panel.add(label1); label2 = new JLabel("2. Text"); // Label erzeugen panel.add(label2); container.add(panel, BorderLayout.CENTER); // create 65

66 Bildschirmgestaltung: Layout Die Bildschirmstruktur wird durch ein Containerobjekt oder Layoutverwalter realisiert. Darstellung ist unabhängig von der Größe des Fensters Layout stellt eine Beziehung zwischen den Elementen dar. Layout-Verwalter: BorderLayout GridLayout FlowLayout CardLayout BoxLayout GridBagLayout 66

67 Flow-Layout Das FlowLayout speichert die GUI-Elemente in einer Reihe. 67

68 Flow-Layout public class Layout3 extends JFrame { public Layout3() { JButton bn; Integer I = new Integer(0); this.getcontentpane().add( new FlowLayout() ); for (int i=0; i<15; i++) { bn = new JButton( Integer.toString(i+1) ); this.getcontentpane().add(bn); // create FlowLayout1 68

69 Flow-Layout public class Layout3 extends JFrame { public Layout3() { JPanel panel; JButton bn; Integer I = new Integer(0); panel = new JPanel(); panel.setlayout ( new FlowLayout() ); for (int i=0; i<15; i++) { bn = new JButton( Integer.toString(i+1) ); panel.add(bn); this.getcontentpane().add(panel, BorderLayout.NORTH); // create FlowLayout1 69

70 Flow-Layout public class Layout4 extends JFrame { public Layout4() { JPanel panel; JButton bn; Integer I = new Integer(0); panel = new JPanel(); panel.setlayout ( new FlowLayout() ); for (int i=0; i<15; i++) { bn = new JButton( Integer.toString(i+1) ); panel.add(bn); this.getcontentpane().add(panel, BorderLayout.CENTER); // create FlowLayout2 70

71 Border-Layout North West Center East public BorderLayout1() { JLabel label1; JLabel label2; Container container; JPanel panel; South 71

72 Border-Layout public class BorderLayout1 extends JFrame { public BorderLayout1() { JButton bn1; this.getcontentpane().setlayout ( new BorderLayout(3,1) ); bn1 = new JButton("1. Text"); // Label erzeugen this.getcontentpane().add(bn1, BorderLayout.SOUTH); // create Ergebnis: Schalter hat die gesamte Breite 72

73 Border-Layout: Erweiterung Beispiel 06 public class BorderLayout2 extends JFrame { public BorderLayout2() {... panel = new JPanel(); panel.setlayout ( new FlowLayout() ); bn1 = new JButton("1. Text"); // Label erzeugen panel.add(bn1); bn2 = new JButton("2. Text"); // Label erzeugen panel.add(bn2); bn3 = new JButton("3. Text"); // Label erzeugen panel.add(bn3); this.getcontentpane().add(panel, BorderLayout.SOUTH); // create 73

74 Grid-Layout public GridLayout1() { JPanel panel; // AnzZeilen, AnzSpalten panel.setlayout( new GridLayout(4,5)); panel.add(...); 74

75 Grid-Layout Ergebnis: Schalter hat die gesamte Breite public class GridLayout1 extends JFrame { public GridLayout1() { panel = new JPanel(); panel.setlayout ( new GridLayout(5,3) ); this.getcontentpane().add(panel, BorderLayout.CENTER); for (int i=0; i<15; i++) { bn = new JButton( Integer.toString(i+1) ); panel.add(bn); // create 75

76 Grid-Layout Ergebnis: Aussehen der Schalter public class GridLayout1 extends JFrame { public GridLayout1() { panel = new JPanel(); panel.setlayout ( new GridLayout(5,3) ); this.getcontentpane().add(panel, BorderLayout.CENTER); for (int i=0; i<17; i++) { // 17 Schalter statt 15 bn = new JButton( Integer.toString(i+1) ); panel.add(bn); // create 76

77 Card-Layout Das CardLayout platziert Komponenten (gewöhnlich Bedienfelder) wie K arten in einem Stapel übereinander. Es wird jeweils nur eine Kom-ponente bzw. ein Bedienfeld angezeigt. Sie haben die Möglichkeit, jeweils ein anderes Bedienfeld nach oben zu legen und somit durch die Bedienfelder zu blättern. 77

78 78

79 79

80 TabbedPane-Layout Das TabbedPaneLayout platziert Komponenten (gewöhnlich Bedienfelder) wie Karten in einem Stapel nebeneinander. Es wird jeweils nur eine Komponente bzw. ein Bedienfeld angezeigt. Man hat die Möglichkeit, jeweils ein anderes Bedienfeld nach vorne zu legen und somit durch die Register anzuzeigen. 80

81 TabbedPane-Layout private void setgui() { JTabbedPane jtabbedpane1 = new JTabbedPane(); // 2. Definition der Farbpanels mycanvas mc1 = new mycanvas(color.green); mycanvas mc2 = new mycanvas(color.red); mycanvas mc3 = new mycanvas(color.blue); jtabbedpane1.add("grün",mc1); jtabbedpane1.add("rot",mc2); jtabbedpane1.add("blau",mc3); this.getcontentpane().add(jtabbedpane1, BorderLayout.CENTER); // setgui 81

82 JTabbedPane-Layout // Erweiterer Karten jtabbedpane1.addtab("schalter", null, createpanel1() ); jtabbedpane1.addtab("liste", null, createliste() ); JPanel createpanel1() { JButton bn1, bn2, bn3; JPanel panel = new JPanel(); panel.setlayout ( new FlowLayout() ); bn1 = new JButton("1. Text"); // Label erzeugen panel.add(bn1,"south"); bn2 = new JButton("2. Text"); // Label erzeugen panel.add(bn2,"south"); bn3 = new JButton("3. Text"); // Label erzeugen panel.add(bn3,"south"); return panel; // createpanel1 82

83 JTabbedPane: Einfügen Jpanel panel; int n = jtabbedpane1.gettabcount(); for (int i=0; i<4; i++) { panel = new Jpanel(); jtabbedpane1.add(i.tostring(), panel); JTabbedPane: Zugriff Jpanel panel; int n = jtabbedpane1.gettabcount(); for (int j=0; j<n; j++) { panel = (JPanel) jtabbedpane1.getcomponentat(j); panel.setbackground(color.red); 83

84 GridBagLayout Insets GridBagConstraints: 84

85 GridBag-Layout GridBagLayout ist ein extrem flexibles und leistungsstarkes Layout, das beim Erzeugen von Komponenten in einem Gitter mehr Möglichkeiten bietet als GridLayout. Mit Hilfe von GridBagLayout können Sie Komponenten horizontal und vertikal in einem rechteckigen Gitter positionieren. Die Komponenten können unterschiedliche Größen besitzen und mehrere Zellen einnehmen. 85

86 GridBag-Layout Eine Komponente kann auch kleiner als ihr Anzeigebereich sein, wenn keine Insets vorhanden sind, wie bei Komponente "6" im folgenden Beispiel. Obwohl der Anzeigebereich aus nur einer Zelle besteht, gibt es keine Begrenzungen, die die Komponente über ihre Minimalgröße hinaus vergrößern. In diesem Fall wird die Breite des Anzeigebereichs durch die größeren Komponenten in den darüber befindlichen Zeilen der gleichen Spalte bestimmt. Komponente "6" wird in ihrer kleinsten Größe angezeigt, und da sie kleiner ist als ihr Anzeigebereich, wurde sie über eine anchor-begrenzung am linken Rand (West) des Anzeigebereichs plaziert. 86

87 public class Insets extends Object implements Cloneable, Serializable Konstruktor: Insets(int top, int left, int bottom, int right) public int top The inset from the top. This value is added to the Top of the rectangle to yield a new location for the Top. public int left The inset from the left. This value is added to the left of the rectangle to yield a new location for the left edge. public int bottom The inset from the bottom. This value is added to the Bottom of the rectangle to yield a new location for the Bottom. public int right The inset from the right. This value is added to the Right of the rectangle to yield a new location for the Right edge. 87

88 GridBagConstraints: Class java.awt.gridbagconstraints public class GridBagConstraints extends Object implements Cloneable, Serializable The GridBagConstraints class specifies constraints for components that are laid out using the GridBagLayout class. Konstruktoren: GridBagConstraints() Creates a GridBagConstraint object with all of its fields set to their default value. GridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady) Creates a GridBagConstraints object with all of its fields set to the passed-in arguments. Attribute: int anchor 88

89 GridBagContraints Parameter: int gridx int gridy Element in der gridx-te Spalte gridy-te Zeile int gridwidth Breite der Zelle (Anzahl der Spalten ) int gridheight double weightx double weighty Höhe der Zelle (Anzahl der Zeilen) Verteilung von Platzänderung (Prozentual) Verteilung zusätzlichen Platzes (Prozentual) int anchor Verknüpfung (NORTHEAST, EAST, SOUTHEAST, CENTER, SOUTH, SOUTHWEST, WEST, NORTH, NORTHWEST) int fill Insets insets int ipadx int ipady Ausfüllen (NONE, HORIZONTAL, BOTH, VERTICAL) externer Lückenbüßer (absolut), äußere Rand, Top, Left, Bottom, Right interner Lückenbüßer (absolut), Breite des GUI-Elements interner Lückenbüßer (absolut), Höhe des GUI-Elements 89

90 public class Insets extends Object implements Cloneable, Serializable Konstruktor: Insets(int top, int left, int bottom, int right) public int top The inset from the top. This value is added to the Top of the rectangle to yield a new location for the Top. public int left The inset from the left. This value is added to the left of the rectangle to yield a new location for the left edge. public int bottom The inset from the bottom. This value is added to the Bottom of the rectangle to yield a new location for the Bottom. public int right The inset from the right. This value is added to the Right of the rectangle to yield a new location for the Right edge. 90

91 GridBag-Layout: 1. Beispiel Beispiel: GridBagLayout02 91

92 GridBagContraints Parameter: this.getcontentpane().add(jlabel1, new GridBagConstraints(0, 0,?,?, 0.0, 0.0,GridBagConstraints.??, GridBagConstraints.??, new Insets(0,00,0,0), 0, 0)); this.getcontentpane().add(tname, new GridBagConstraints(1, 0,?,?, 0.0, 0.0,GridBagConstraints.??, GridBagConstraints.??, new Insets(0,0,0,0), 00, 0)); this.getcontentpane().add(bnok, new GridBagConstraints(0, 1,?,?, 0.0, 0.0,GridBagConstraints.??, GridBagConstraints.?? new Insets(0,0,0,0), 0, 0)); this.getcontentpane().add(bnesc, new GridBagConstraints(2, 1,?,?, 0.0, 0.0,GridBagConstraints.??, GridBagConstraints.?, new Insets(0,0,0,0), 0, 0)); 92

93 GridBagContraints Parameter: this.getcontentpane().add(jlabel1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(4,20,4,0), 00, 0)); this.getcontentpane().add(tname, new GridBagConstraints(1, 0, 3, 1, 1.0, 0.0,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(4,0,4,20), 00, 0)); this.getcontentpane().add(bnok, new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(4,20,4,0), 0, 0)); this.getcontentpane().add(bnesc, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(4,20,4,0), 0, 0)); 93

94 GridBag-Layout: 2. Beispiel ibib 94

95 GridBag-Layout: 3. Beispiel Beispiel: 40% 60% GridBagLayout

96 GridBag-Layout: 3. Beispiel Elemente: Typ Name Inhalt JLabel jlabel1 Name JTextField TName Name des Studenten JLabel jlabel2 Nummern JTextField TMatrNr Matrikelnummer JTextField TUNummer U-Nummer JProgressBar jprogressbar1 JButton BnUp ProgressBar Addition JButton BnDown ProgressBar Subtraktion 96

97 GridBag-Layout: 4. Beispiel GridBagLayout3 97

98 GridBag-Layout: 5. Beispiel 98

99 Dialogfenster: Klasse Border (RadioButton) Border01 99

100 Beispiel: RadioButton //Frame konstruieren public FrameMsg09() { setsize(300, 200); settitle("radiobutton: FrameMsg09"); JPanel panel1; JLabel label1; JLabel label2; ButtonGroup group1; ButtonGroup group2; setsize(400, 300); settitle("messagebox: FrameMsg09"); rb1.setselected(true oder false); rb1.isselected(); // Setzen // Abfragen RadioButton03 100

101 label1 = new JLabel("1. Auswahl"); label2 = new JLabel("2. Auswahl"); rb1 = new JRadioButton("1. Wahl", false); rb2 = new JRadioButton("2. Wahl", true); rb3 = new JRadioButton("3. Wahl", false); rb4 = new JRadioButton("4. Wahl", false); rb5 = new JRadioButton( 5. Wahl", false); rb6 = new JRadioButton( 6. Wahl", false); rb7 = new JRadioButton( 7. Wahl", true); rb8 = new JRadioButton( 8. Wahl", false); group1 = new ButtonGroup(); group1.add(rb1); group1.add(rb2); group1.add(rb3); group1.add(rb4); RadioButton03 101

102 panel1 = new JPanel(); panel1.setlayout ( new GridLayout(5,2) ); // 5 Zeilen, 2 Spalte this.getcontentpane().add(panel1, BorderLayout.CENTER); panel1.add( label1 ); panel1.add( label2 ); panel1.add( rb1 ); panel1.add( rb5 ); panel1.add( rb2 ); panel1.add( rb6 ); panel1.add( rb3 ); panel1.add( rb7 ); panel1.add( rb4 ); panel1.add( rb8 ); // create RadioButton03 102

103 RadioButton-Versionen RadioButton01: Ohne GroupBox, Alle RadioButton einzeln RadioButton02: Mit GroupBox, Falsche Reihenfolge RadioButton03: Mit GroupBox, Richtige Reihenfolge 103

104 Beispiel: JList JList ist eine Klasse, die in einer Liste Zeichenketten zur Auswahl anzeigt. Man kann ein oder mehrere Elemente auswählen. Liste01 104

105 Liste mit GridbagLayout public Liste01() { String[] items; items = new String[20]; for (int i=0; i<20; i++) { items[i] = Integer.toHexString(i+1)+" Auswahl"; JList jlist = new JList(items); this.getcontentpane().add(jlist, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10,10,10,10), 0, 0)); // create Liste01 105

106 Liste mit GridbagLayout und ScrollPane String[] items; items = new String[20]; for (int i=0; i<20; i++) { items[i] = Integer.toHexString(i+1)+" Auswahl"; jlist = new JList(items); scroll = new JScrollPane(jlist); this.getcontentpane().add(scroll, new GridBagConstraints( 0, 0, 1, 1, 1.0, 1.0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10,10,10,10), 0, 0)); Liste02 106

107 Liste mit GridbagLayout und ScrollPane String[] items; items = new String[20]; for (int i=0; i<20; i++) { items[i] = Integer.toHexString(i+1)+" Auswahl"; jlist = new JList(items); scroll = new JScrollPane(jlist); this.getcontentpane().add(scroll, new GridBagConstraints( 0, 0, 1, 1, 1.0, 1.0,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(10,10,10,10), 0, 0)); Liste02 107

108 Beispiele von Listen: Liste03 Liste03 mit Actionlistener Die ersten beiden Schalter liegen auf einem Event Rechts multi-select Liste03 108

109 Beispiel: JList Methoden der Klasse JList: public JList (); public JList (Object [] listdata); public JList (Vector listdata); // leere Liste // Array mit Objekten // Vector mit Objekten setselectionmode( ListSelectionModel.SINGLE_SELECTION); Nur ein Wert darf selektiert werden setselectionmode( ListSelectionModel.SINGLE_INTERVAL_SELECTION); Ein Wert selektiert, oder ein Bereich setselectionmode( ListSelectionModel. MULTIPLE_INTERVAL_SELECTION); Beliebiger Bereich darf selektiert werden void setlistdata(object[] listdata) // Update der Einträge void setlistdata(vector listdata) // Update der Einträge 109

110 Methoden der Klasse JList: boolean isselectionempty() Wurde mindestens ein Wert selektiert int getselectedindex() Index des selektierten Eintrags int[] getselectedindices() Index aller selektierten Einträge boolean isselectedindex(int) Object getselectedvalue() Gibt das aktuelle Objekt zurück. Falls kein Eintrag ausgewählt wurde, gibt es null zurück. Object[] getselectedvalues() Rückgabe aller selektierten Objekte oder null. void setselectedindices(int[] indices) void setselectedindex(int index) 110

111 Beispiel: JList mit Vector import java.util.vector; JList jlist; JScrollPane scroll; Vector items=new Vector(); // Vector für die JList for (int i=0; i<20; i++) { items.add( Integer.toHexString(i+1)+" Auswahl" ); jlist = new JList(items); scroll = new JScrollPane(jlist); this.getcontentpane().add(scroll,. Liste04 111

112 Beispiel: JList mit Abfrage der Selektion import javax.swing.event.listselectionlistener; import javax.swing.event.listselectionlistener; JList jlist; JScrollPane scroll; Vector items=new Vector(); // Vector für die JList for (int i=0; i<20; i++) { items.add( Integer.toHexString(i+1)+" Auswahl" ); jlist = new JList(items); scroll = new JScrollPane(jlist); this.getcontentpane().add(scroll,. list.addlistselectionlistener( new ListSelectionListener() { public void valuechanged(listselectionevent e) { FileListClick(e); ); private void FileListClick(ListSelectionEvent e) { 112

113 JList-Versionen Liste01: JList ohne Scrollen Liste02: JList mit Scrollen Liste03: Zwei JListen, Abfrage mit Schaltern Liste04: JList mit Vector Liste05: Jist mit Klasse CPruefung Unterschiedliche Ausgabe (Prüfung, Note, Prüfung+Note, Note+Prüfung) Liste06: Beispiel Vector mit JList Einfügen, Löschen, Ändern Liste07: CellRenderer Liste08: CellRenderer und unterschiedliche Fonts Liste09: Zwei Klassen in einer Liste 113

114 Beispiel: JComboBox JComboBox ist eine Klasse, die in einer Liste Zeichenketten zur Auswahl anzeigt. Das Element klappt beim Anklicken auf. Man kann ein Element auswählen. combo.seteditable( cbbox1.isselected() ) ComboBox1 114

115 JComboBox: 1. Beispiel public ComboBox1() { String [] items = new String[20]; for (int i=0; i<20; i++) { items[i] = Integer.toHexString(i+1)+" Auswahl"; jcombobox combo = new JComboBox(items); this.getcontentpane().add(combo, BorderLayout.CENTER); combo.seteditable(false); combo.setselectedindex(-1); // keine Markierung // create ComboBox1 115

116 Beispiel: JComboBox Methoden der Klasse JComboBox: public JComboBox (); // leere Liste public JComboBox (Object [] listdata);// Array mit Objekten public JComboBox (Vector listdata); // Vector mit Objekten setselectionmode( ListSelectionModel.SINGLE_SELECTION); Nur ein Wert darf selektiert werden setselectionmode( ListSelectionModel.SINGLE_INTERVAL_SELECTION); Ein Wert selektiert, oder ein Bereich setselectionmode( ListSelectionModel. MULTIPLE_INTERVAL_SELECTION); Beliebiger Bereich darf selektiert werden 116

117 Beispiel: JComboBox Methoden der Klasse JComboBox: boolean isselectionempty() Wurde mindestens ein Wert selektiert int getselectedindex() // Index (0 bis n-1 ODER -1) Object getselecteditem() Ergibt das selektierte Object oder null, wenn kein Eintrag markiert wurde Object[] getselectedobjects() Return an array of the values for the selected cells. combo.seteditable(false / true); combo.setselectedindex(-1 / 0 bis n-1 ); 117

118 Beispiel: JComboBox JComboBox combobox = new JComboBox(); // Eintragen mittels additem combobox.additem("red"); combobox.additem("orange"); combobox.additem("yellow"); combobox.additem("green"); combobox.additem("blue"); combobox.additem("indigo"); combobox.additem("violet"); combobox.seteditable(true); 118

119 Plausibilität import java.util.regex.matcher; import java.util.regex.pattern; String sstr=""; boolean bok; while(!bok){ sstr=joptionpane.showinputdialog("bitte Dateinamen eingeben"); // Zum Abfangen falscher Eingaben wird via Regex überprüft // Pattern p = Pattern.compile("[a-zA-Z_0-9]++"); Matcher m = p.matcher(in); bok = m.matches();

120 Plausibilität import javax.swing.inputverifier; String sdatetext =datefield.gettext(); boolean flag = true; // Pruefung ob Format korrekt if (sdatetext.matches("\\d\\d\\.\\d\\d\\.\\d\\d\\d\\d")) { // Datum verarbeiten else { JOptionPane.showMessageDialog( null, "Bitte geben Sie das Datum im Format tt.mm.jjjj ein", "Hinweis", JOptionPane.ERROR_MESSAGE); datefield.grabfocus(); datefield.selectall(); //Beispiel von 120

121 Beispiel: JTable 121

122 122

123 Beispiel: JTable JTable is a GUI-Komponente die Daten in einer zweidimensionaler Form (X/Y) darstellen kann. In jeder Zelle kann ein beliebiges Objekt dargestellt werden. Jede Spalte kann individuelle Eigenschaften besitzen - Comboliste - Eigener Editor - Farbsymbol - Checkbox Mit der Default-Einstellung ist das Erzeugen einer Tabelle aber einfach. JTable verwendet zur Darstellung der Inhalte ein Datenmodell (Klasse). 123

124 Beispiel: JTable Mindestdaten einer Tabelle: Anzahl der Zeilen Anzahl der Spalten Beschreibung der Zellinhalte Beschreibung der Spalten 124

125 JTable Konstruktor und Methoden new JTable( int rowsize, int colsize); new JTable( TableModel datamodel); new JTable( Vector Zellen, Vector header); settableheader / gettableheader setcolumnmodell setmodell(tablemodel m) In createtable(): for (int i=0; i<_dbfile.getanzfelder(); i++) { TableColumn col = table.getcolumnmodel().getcolumn( i ); col.setminwidth(100); col.setmaxwidth(500); col.setresizable(true); JTextField f = new JTextField(); f.setfont( new Font("Arial", Font.BOLD, 18) ); TableColumn acolumn = table.getcolumn( headername(i) ); acolumn.setcelleditor( new DefaultCellEditor(f) ); 125

126 Beispiel: JTable TableModel datamodel = new AbstractTableModel() { public int getcolumncount() { return 10; public int getrowcount() { return 5; public Object getvalueat(int row, int column) { return new Integer(row*column); ; // DataModel JTable table = new JTable(dataModel); this.getcontentpane().add(table, BorderLayout.CENTER); Tabelle01 126

127 Ergebnis: JTable Tabelle01 127

128 Ergebnis: JTable mit 50 Zeilen Nur die ersten 7 Zeilen sind erreichbar! Tabelle01 128

129 Beispiel: JTable TableModel datamodel = new AbstractTableModel() { public int getcolumncount() { return AnzCols; public int getrowcount() { return AnzRows; public Object getvalueat(int row, int column) { return data[row][column]; // Header public String getcolumnname(int column) { return new String( "C:"+Integer.toString(column+1) ); ; // data Model JTable table = new JTable(dataModel); scrollpane = new JScrollPane(table); this.getcontentpane().add(scrollpane, BorderLayout.CENTER); Tabelle02 129

130 Ergebnis: JTable mit 50 Zeilen und Scrollpane Tabelle02 130

131 Datendarstellung in der Tabelle: Das TableModel benutzt ein globales Array data Konstante definieren final int AnzRows = 40; final int AnzCols = 15; Matrix definieren Object[][] data; Matrixdimension deklarieren data = new String[ AnzRows][AnzCols]; Matrix mit Werten füllen for (int r=0; r<anzrows; r++) { for (int c=0; c<anzcols; c++) { data[r][c] = Integer.toString(r*100+c); 131

132 Beispiel: JTable TableModel datamodel = new AbstractTableModel() { public Object getvalueat(int row, int column) { return???; public boolean iscelleditable(int row, int column) { return getcolumnclass(column) == String.class; public void setvalueat(object avalue, int row, int column) {???? = avalue; ; Tabelle02 132

133 Beispiel: JTable Tabelle02 TableModel datamodel = new AbstractTableModel() { public int getcolumncount() { return AnzCols; public int getrowcount() { return AnzRows; public Object getvalueat(int row, int column) { return data[row][column]; public String getcolumnname(int column) { return new String( Integer.toString(column+1) ); public Class getcolumnclass(int column) { return getvalueat(0, column).getclass(); public boolean iscelleditable(int row, int column) { return getcolumnclass(column) == String.class; public void setvalueat(object avalue, int row, int column) { data[row][column] = avalue; ; Tabelle02 133

134 Beispiel: JTable Tabelle03 Tabelle03 134

135 Beispiel: JTable Tabelle04: ComboBox + Tooltipp // Create a combo box to show that you can use one in a table. JComboBox combobox = new JComboBox(); combobox.additem("red"); combobox.additem("orange"); combobox.additem("yellow"); combobox.additem("green"); combobox.additem("blue"); combobox.additem("indigo"); combobox.additem("violet"); TableColumn colorcolumn = tableview.getcolumn("favorite Color"); // Use the combo box as the editor in the "Favorite Color" column. colorcolumn.setcelleditor(new DefaultCellEditor(comboBox)); Tabelle04 135

136 Beispiel: JTable Tabelle04 Tabelle04 136

137 Beispiel: JTable Tabelle05 public void setvalue(object value) { int cellvalue; if (value instanceof Integer) cellvalue = ((Integer)value).intValue(); else cellvalue = 0; if (cellvalue > 30) { setforeground(color.black); setbackground(color.red); else { setforeground(color.red); setbackground(color.green); settext((value == null)? "" : value.tostring()); Tabelle05 137

138 Beispiel: JTable Tabelle06 Tabelle06 138

139 Beispiel: JTable Tabelle06 public Object getvalueat(int row, int col) { mydata data = (mydata) liste.elementat(row); Item it; switch (col) { case 0: return new Item(data.getVorname(),data.getActivate()==1 ); case 1: return new Item(data.getNachname(),data.getActivate()==2 ); case 2: return new Item(Integer.toString(data.getMatrNummer()), data.getactivate()==4 ); case 3: return new Item(data.getUNummer(),data.getActivate()==8 ); case 4: return new Item(data.getFarbe(),data.getActivate()==16 ); default : return "XXXXXX"; // case Es werden keine String in die Zelle eingefügt Stattdessen wird eine Wrapperklasse erzeugt Tabelle06 139

140 Beispiel: JTable Tabelle06 public void setvalue(object value) { Item it; boolean bactivate; if (value instanceof Item) { bactivate = ((Item) value).activate; if (bactivate) { //setforeground(color.black); setbackground(color.red); else { setbackground(color.white); settext((value == null)? "" : value.tostring()); ; Tabelle06 140

141 Beispiel: JTable Tabelle07 Sortieren der Tabelle Doppelklick erzeugt ein modales Dialogfenster Tabelle07 141

142 class CData implements Comparable{ int static sorttyp=1; public int compareto(object obj) { CData myd; myd = (CData) obj; switch (sorttyp) { case 1: return _Vorname.compareToIgnoreCase(myD._Vorname ); case 2: return _Name.compareToIgnoreCase(myD._Name ); case 3: if (_MatrNummer < myd._matrnummer ) return -1; else { if (_MatrNummer > myd._matrnummer ) return 1; else return 0; case 4: return _UNummer.compareToIgnoreCase(myD._UNummer ); default: return 0; // case // compareto, Rückgabe // CData 142

143 Tabellenbeispiele: Tabelle01: Tabelle02: Tabelle03: Tabelle04: Tabelle05: Tabelle06: Tabelle07: Tabelle08: Einfache Tabelle ohne Scrolling Einfache Tabelle mit Scrolling, data-array Tabelle mit einem Schalter zum Neuzeichnen Tabelle mit Farbdarstellung und Tooltipp ComboBox, Checkbox pro Spalte Tabelle mit ComboBox, Checkbox pro Spalte individueller Farbe bzgl. Favorite Number Tabelle mit Klasse und individueller Hintergrund Tabelle mit Sortierung und Dialogfenster (Doppelklick) Externe Sortierung Tabelle mit Sortierung und Dialogfenster (Doppelklick) interne Sortierung 143

144 Wichtige Tabellen Methoden: TableModel datamodel = new AbstractTableModel() { public int getcolumncount() { return AnzCols; public int getrowcount() { return AnzRows; public Object getvalueat(int row, int column) { return data[row][column]; public String getcolumnname(int column) { return new String( Integer.toString(column+1) ); public Class getcolumnclass(int column) { return getvalueat(0, column).getclass(); public boolean iscelleditable(int row, int column) { return getcolumnclass(column) == String.class; public void setvalueat(object avalue, int row, int column) { data[row][column] = avalue; public int getcolumnwidth(int column) { return 200; ; 144

145 Tabellencode: table.setautoresizemode(jtable.auto_resize_off); JComboBox combobox = new JComboBox( items ); TableColumn colorcolumn = table.getcolumn("favorite Color"); // Eine Combobox dient als Editor für die Spalte "Favorite Color" colorcolumn.setcelleditor( new DefaultCellEditor(comboBox) ); // Setzen eines Hintergrunds und Tooltipp für die Farbspalte DefaultTableCellRenderer colorcolumnrenderer = new DefaultTableCellRenderer(); colorcolumnrenderer.setbackground(color.cyan); colorcolumnrenderer.settooltiptext("click for combo box"); colorcolumn.setcellrenderer(colorcolumnrenderer); table.setautocreaterowsorter(true); numbercolumnrenderer.sethorizontalalignment(jlabel.right); numberscolumn.setpreferredwidth(110); 145

146 Tabellenspalten ausrichten // Erzeugen der SpaltenDefinition DefaultTableCellRenderer numbercolumnrenderer = new DefaultTableCellRenderer(); // Ausrichtung setzen numbercolumnrenderer.sethorizontalalignment(jlabel.center); // RIGHT LEFT // holen der Spalten TableColumn numberscolumn = table.getcolumn("favorite Number"); MittelsSpaltenüberschrift // setzen der Ausrichtung numberscolumn.setcellrenderer(numbercolumnrenderer); 146

147 Javaklasse: Timer Die Klasse Timer erlaubt das automatische Aufrufen Deklaration in der Klasse: public class Timer1 extends JFrame implements ActionListener { Timer animator; // Timer animator = new Timer(500, this); // 500 ms 147

148 Methoden der Klasse Timer Timer muss angestellt werden: animator.start(); Abstellen des Timers: animator.stop(); Aufruf des Timers: public void actionperformed(actionevent e) { // actionperformed 148

149 Komplettes Beispiel für einen Timer public class Timer1 extends JFrame implements ActionListener { Timer animator; // Timer long summe = 0; public Timer1 () { animator = new Timer(500, this); // 500 ms animator.start(); // starten // startloading public void actionperformed(actionevent e) { summe += 1; System.out.println(summe); if (summe>10) { animator.stop(); // System.exit(0); // Beenden // actionperformed Timer1 149

150 2. Komplettes Beispiel für einen Timer public class Timer2 extends JFrame implements ActionListener { Timer animator; // Timer long summe = 0; JLabel label; public Timer2 () { this.setsize(400, 300); // Breite Höhe this.settitle("timertest"); // Titel System.out.println(summe); label = new JLabel("Label"); animator = null; // Null setzen label.settext("jlabel1"); this.getcontentpane().add(label, BorderLayout.NORTH startloading(); // init und start des Timers Timer2 150

151 2. Komplettes Beispiel für einen Timer // init und Start des Timers animator public void startloading() { // Sicherheitsbafrage if(animator == null) { animator = new Timer(500, this); // 500 ms animator.start(); // starten // startloading // Beendet den Timer und das gesamnte Progamm! public void stoploading() { // Sicherheitsabfrage if(animator!= null) { animator.stop(); // animator = null; // Anfangszustand System.exit(0); // Beenden // stoploading 151

152 2. Komplettes Beispiel für einen Timer public void actionperformed(actionevent e) { summe += 1; label.settext( Long.toString(summe) ); System.out.println(summe); if (summe>10) { stoploading(); // actionperformed Timer1 152

153 Beispiel: JTree Rest des Scriptes als Extra-Datei Tree1 153

154 Look & Feel public void MnLook_and_Feel(ActionEvent e) { try { if (e.getsource() == MnLook_Feel_Windows ) { UIManager.setLookAndFeel( "com.sun.java.swing.plaf.windows.windowslookandfeel"); SwingUtilities.updateComponentTreeUI(this.getContentPane() ); if (e.getsource() == MnLook_Feel_Metal ) { UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); SwingUtilities.updateComponentTreeUI(this.getContentPane() ); if (e.getsource() == MnLook_Feel_Motif ) { UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); SwingUtilities.updateComponentTreeUI(this.getContentPane() ); if (e.getsource() == MnLook_Feel_Macintosh ) { UIManager.setLookAndFeel("javax.swing.plaf.mac.MacLookAndFeel"); SwingUtilities.updateComponentTreeUI(this.getContentPane() ); catch (Exception exc) { Look_and_Feel_02 154

155 Frame SDI und MDI-Fenster Einfaches Fenster (à Taschenrechner), AWT JFrame Einfaches Fenster (à Taschenrechner), Swing SDI- und MDI-Frames Hauptfenster mit dem DesktopPane Clientfenster als JInternalFrame JDialog Diese Klasse erlaubt die Erstellung modaler Fenster zur Eingabe von Optionen, spezieller Dateneingabe etc. 155

156 Beispiel-Dialog 156

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

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

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

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

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

Graphische Nutzerschnittstellen

Graphische Nutzerschnittstellen Graphische Nutzerschnittstellen Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Inhalt 1. Einführung,

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 GUI Entwicklung mit Swing

Java GUI Entwicklung mit Swing Seminarunterlage Version: 5.03 Version 5.03 vom 13. Februar 2014 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

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

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

Graphische Nutzerschnittstellen

Graphische Nutzerschnittstellen Graphische Nutzerschnittstellen Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Inhalt 1. Einführung,

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

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

Ü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

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

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

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

jcontentpane.setlayout(new BorderLayout()); // unten JPanel unten = new JPanel(); unten.setlayout( new BoxLayout(unten, BoxLayout. 04.07.2011 Lösungsvorschlag 1. Aufgabe (12 + 12 Punkte): Screendesign : im Center: Label mit Bild 3P: Panel im West mit BoxLayout und TextField, Scrollpane und TextArea 4P: Panel im East mit FlowLayout

Mehr

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

GroupLayout Anmerkung

GroupLayout Anmerkung Swing Layouts Layoutmanager Ordnen Elemente eines Containers nach einem bestimmten Verfahren an Der Container erfragt bei jeder Neudarstellung bei seinem Layoutmanager, wie die Komponenten des Containers

Mehr

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

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

Programmieren II. Die Klasse JList. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester JList. Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 37 JList JTable Layout-Manager GridBagLayout 2 / 37 Die Klasse JList Die Klasse JList stellt einen Container für Auswahllisten

Mehr

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

JList JTable Layout-Manager GridBagLayout. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 JList 2 JTable 3 Layout-Manager 4 GridBagLayout Die Klasse JList Die Klasse JList stellt einen Container für Auswahllisten

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Aufgabe 03. Swing: Die Swing-Oberfläche wird vorgegeben: Abbildung 1 Musterlösung

Aufgabe 03. Swing: Die Swing-Oberfläche wird vorgegeben: Abbildung 1 Musterlösung Hochschule Harz Programmierung 2 Aufgabe 03: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 2 für MI / WI Thema: Swing, GridBagLayout und Bit-Funktionen Versuchsziele

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

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

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

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

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

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des

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

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

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

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

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

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

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Printing API 1. Übersicht 2. Vorgehen 3. Beispiel 2. Klasse PrintUtils 3. Mehrere Seiten drucken Folie 1 Lernziele Sie wissen, wie Sie Swing-Komponenten ausdrucken können Sie kennen den Aufbau

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

Musterlösungen zur Klausur Informatik 3

Musterlösungen zur Klausur Informatik 3 Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus

Mehr

Auszug aus der Klassenstruktur

Auszug aus der Klassenstruktur Swing javax.swing Auszug aus der Klassenstruktur JComponent AbstractButton JColorChooser JComboBox JInternalFrame JLabel JList JPanel JTable JTextComponent JTree JToolBar JToolTip JToggleButton JButton

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

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

Dokumentation des Projektes Tic Tac Toe

Dokumentation des Projektes Tic Tac Toe Praktikum aus Programmierung Dr. Michael Hahsler Dokumentation des Projektes Tic Tac Toe 0050230 1 Java Projekt: Tic Tac Toe 1. Inhaltsverzeichnis 1. Inhaltsverzeichnis... 2 2. Problemdefinition... 2 3.

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

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

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

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

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

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

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

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

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

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

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

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

WPF Steuerelemente Listbox, ComboBox, ListView,

WPF Steuerelemente Listbox, ComboBox, ListView, WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,

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

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

Layout Manager. Astrid Beck FHT Esslingen

Layout Manager. Astrid Beck FHT Esslingen Layout Manager Astrid Beck FHT Esslingen Layout Manager Layout Manager arrangieren den Inhalt eines Containers gemäß vorgegebener Regeln Layout Manager BorderLayout North, South, East, West, Center FlowLayout

Mehr

PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes

PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes Page 1 of 7 Package Class Tree Deprecated Index Help PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes SUMMARY: NESTED FIELD CONSTR METHOD DETAIL: FIELD CONSTR METHOD Prog1Tools Class IOTools java.lang.object

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

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

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

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

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

Informatik II Aufgabenblatt 7

Informatik II Aufgabenblatt 7 Prof. Dr. Th. Letschert FB MNI TH Mittelhessen StudiumPlus Informatik II Aufgabenblatt 7 Gruppenübung Stücklisten Stücklisten beschreiben die Zusammensetzung von Erzeugnissen aus Untereinheiten. Bei der

Mehr

11. GUI-Programmierung mit SWING Überblick

11. GUI-Programmierung mit SWING Überblick 11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing

Mehr

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

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

Arten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits)

Arten von Streams. Daten. Bytes (8-Bits) Java Programm. Daten. Java Programm. Characters (16 - Bits) Datenströme Arten von Streams Daten 0 1 1 0 1 0 1 0 Java Programm Bytes (8-Bits) Daten 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 Java Programm Characters (16 - Bits) Byteströme(InputStream/OutputStream) I Java 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

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

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

Vorlosung: Swing: Erstellen eines JFrames mit GridBagLayout

Vorlosung: Swing: Erstellen eines JFrames mit GridBagLayout Hchschule Harz BS/GUI Vrlesung: FB Autmatisierung und Infrmatik Dipl.-Inf., Dipl.-Ing. (FH) M. Wilhelm BS/GUI Thema: Swing und GridBagLayut Versuchsziele Kenntnisse in der Anwendung vn: Erstellen einer

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Bedienungsanleitung Anlassteilnehmer (Vereinslisten) Bedienungsanleitung Anlassteilnehmer Dieses Programm ist speziell für Vereine entworfen. Es ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen,

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik GUI-Programmierung mit Swing AWT und Swing Java enthält zwei Pakete zur Programmierung graphischer Oberflächen. java.awt: Das Abstract

Mehr

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Graphische Nutzerschnittstellen

Graphische Nutzerschnittstellen Graphische Nutzerschnittstellen Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Inhalt 1. Einführung,

Mehr

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Testen von graphischen Benutzeroberflächen. 26. Juni 2013 Testen von graphischen Benutzeroberflächen 26. Juni 2013 Überblick Testarten Methoden-, Klassen-, Komponenten-, Systemtests Motivation für automatisches Testen von graphischen Benutzeroberflächen Entwicklungsprinzipien

Mehr

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

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

Java-Programmierung. Remote Method Invocation - RMI

Java-Programmierung. Remote Method Invocation - RMI Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig

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

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

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu) HMExcel Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu) Inhalt 1. Einleitung...1 2. Beispiele...2 2.1. Daten in ein Tabellenblatt schreiben...2

Mehr

Liste Programmieren Java Überblick

Liste Programmieren Java Überblick Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 3 Vererbung 4 Schnittstellen 5 Innere Klassen 6 Exceptions 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe 10 Threads 11 GUI-Programmierung

Mehr

Text Formatierung in Excel

Text Formatierung in Excel Text Formatierung in Excel Das Aussehen des Textes einer oder mehrerer Zellen kann in Excel über verschiedene Knöpfe beeinflusst werden. Dazu zuerst die betroffenen Zelle(n) anwählen und danach den entsprechenden

Mehr

Anzeige von eingescannten Rechnungen

Anzeige von eingescannten Rechnungen Anzeige von eingescannten Rechnungen Wenn Sie sich zu einer Eingangsrechnung die eingescannte Originalrechnung ansehen möchten, wählen Sie als ersten Schritt aus Ihrem Benutzermenü unter dem Kapitel Eingangsrechnung

Mehr