Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13. Vorlesung WS 2004/2005 Übersicht • Benutzeroberflächen – Fenster (JFrame), Buttons, Texteingabefenster – Arbeiten mit dem Visual Editor (VE) Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 2 Benutzeroberflächen: Bibliotheken Java-Klassenbibliotheken: • AWT (Abstract Window Toolkit) – historisch erste Java-Klassenbibliothek für Oberflächen – Aussehen abhängig vom Betriebssystem – Paket java.awt.* • Swing – Erweiterung des AWT – Aussehen unabhängig vom Betriebssystem – Paket javax.swing.* • Weitere Pakete: – Java 2D /3D – Drag and Drop – .... Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 3 Erzeugen eines Frame: Schritt 1 Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 4 Erzeugen eines Frame: Schritt 2 Name der Klasse mit main Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 5 Erzeugen eines Frame: Ergebnis 1 Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 6 Erzeugen eines Frame: Ergebnis 2 Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 7 Erzeugen eines Frame: Schritt 3 • In der main-Methode müssen zwei Befehle ergänzt werden: • Erzeugen eines Objekts (Unterklasse von JFrame) mit new • Aufruf von setVisible(true): zeigt JFrame Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 8 Ausführen des Frame Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 9 Frame Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 10 Exkurs: falls VisualClass bei Neu nicht da ist • Menü: Fenster - Perspektive anpassen - Datei > neu aufklappen: Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 11 Exkurs: falls Java Beans Fenster nicht da ist • Menü: Fenster - Sicht anzeigen -andere – Doppelklick auf Java - Java Beans Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 12 Anmerkung • Programme bisher (ohne Frames): – Erzeugen einer Klasse mit Methode "main" – eigener Programmcode in "main" (oder in Methoden, die von "main" aus aufgerufen werden) • mit Frames: – Definition einer Unterklasse von JFrame ("Fenster") – in "main" wird Objekt dieser Unterklasse erzeugt und Frame gestartet – eigener Programmcode in Methode, die auf ButtonKlick/Menuewahl/sonst. Ereignis (z.B. Mausbewegung) reagiert Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 13 Fenster des Visual Editors Java Beans Fenster Design des Frame Erzeugter Programmcode Eigenschaften (des im Java Beans Fenster aktivierten Elements) Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 14 Ändern des Layouts Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 15 Einfügen eines Button 1. Klick: JButton 2. Klick: Positionierung Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 16 Einfügen eines Textfeldes 1. Klick: JTextField 2. Klick: Positionierung Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 17 Ergebnis: Textfeld + Button Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 18 Button-Text hinzufügen Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 19 Textfeld und Button: erzeugte Attribute • Eclipse hat Referenzvariablen (Attribute von MeinFenster) für den Button (jButton) und das Textfeld (jTextField) erzeugt Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 20 Programmierung der Oberfläche I • Eclipse (der Visual Editor) erzeugt zu jedem graphischen Element (Button, Textfeld, Menue,..) automatisch eine Referenzvariable • diese Referenzvariablen gehören zu entsprechenden Klassen (JButton, JTextField) • für diese Referenzvariable können Methoden dieser Klassen aufgerufen werden Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 21 Programmierung der Oberfläche II • Einem graphischen Element (Button, Textfeld, Menue,..) sind Ereignisse/Events (Klick auf Button/Menuefeld, Mausbewegung auf Textfeld,...) zugeordnet • Einem graphischen Element können Methoden zugeordnet werden, die bei einem bestimmten Ereignis automatisch aufgerufen werden. – z.B. Klick auf Button Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 22 Reaktion auf Button-Klick: Schritt 1 Rechtsklick auf Button Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 23 Reaktion auf Button-Klick: Schritt 2 Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 24 Reaktion auf Button-Klick: Erzeugte Methode hier wird Code eingefügt, der bei Klick auf Button ausgeführt wird Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 25 Methoden für Textfelder (Klasse JTextField) Methoden der Klasse javax.swing.JTextField • String getText(): liefert Text in Textfeld • void setText(String): setzt Text in Textfeld • weitere Methoden: Javadoc Beispiel: javax.swing.JTextField t; .................... String st = t.getText(); t.setText(st+st); //Dupliziert Text in Textfeld Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 26 Bsp: Duplizieren des Textes bei Klick auf Button Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 27 Umwandeln von String in Zahl • typische Anwendung: mit Eingabe in Textfeld soll gerechnet werden. • Methode: static int parseInt(String) der Klasse Integer • Beispiel: javax.swing.JTextField tf; ........ String s = tf.getText(); int i = Integer.parseInt(s); int j = 3*i + 8; • Vorsicht: Wenn im String keine "Zahl" steht, stürzt das Programm ab (Lösung: Ausnahmebehandlung, Exceptions) Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 28 Weitere Methoden Methode der Klasse java.awt.Frame: • void setSize(int, int ) – z.B. setSize(500,500); • void setBackground(Color) – z.B. setBackground(java.awt.Color.magenta); Methoden der Klasse java.awt.Button: • void setLabel(String) • void setForeground(Color) • void setBackground(Color) • weitere Methoden: Javadoc Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 29 Übungsaufgabe • Programmiert eine Anwendung mit einem Button. Bei Klick auf diesen Button soll der Text "Hallo" ausgegeben werden. Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 30 Übungsaufgabe • Schreibt eine Anwendung mit einem Button und zwei Textfeldern, so dass beim Klicken des Buttons der Text des einen Textfeldes im anderen Textfeld in Grossbuchstaben erscheint: • Hinweis: – die Methode toUpperCase() wandelt einen String in Grossbuchstaben um – Das Klicken auf einen Button löst den Event • Events - Mouse - MouseClicked aus Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 31 Hausaufgabe • Programmiert eine Anwendung, die eine Temperatur von Celsius nach Fahrenheit und umgekehrt umrechnet. Die Ausgangstemperatur soll interaktiv eingegeben werden. Die Richtung der Berechnung soll über eine Checkbox eingestellt werden. Die Anwendung soll also so oder so ähnlich aussehen: • Hinweis: das Programm zur Temperaturumrechnung findet Ihr in Vorlesung 3 (Musterlösung zur Hausaufgabe) • Label (wie "Celsius") erzeugt mal mit • Eine Checkbox erzeugt man mit . Die Methode boolean getState() der Klasse Checkbox gibt an, ob ein Häkchen da ist (true) oder nicht (false). Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/05 32