30
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörs Einführung in die Programmierung mit Java 11. Vorlesung WS-03/04

Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

Embed Size (px)

Citation preview

Page 1: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

Institut für Kartographie und GeoinformationProf.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk DörschlagInstitut für Kartographie und GeoinformationProf.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag

Einführung in dieProgrammierung mit Java

11. Vorlesung WS-03/04

Page 2: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Der Nullpointer

Schlüsselwort :Schlüsselwort :null

Einsatz :Einsatz :• kann jeder Referenzvariable (= Variable/Attribut von Typ einer

Klasse) zugewiesen werden• ist die „default“-Referenz einer Referenzvariable• hat keine Methoden oder Attribute

Page 3: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Der Nullpointer - Beispiel 1 zur Nutzung -

public class Polygon {Punkt[ ] part = null;

public void resize( int length){if( part == null){

part = new Punkt[length];}else{

Punkt[] neu = new Punkt[length];if( length > part.length){

length = part.length;}for( int i = 0; i < length; i++){

neu[i] = part[i];}part = neu;

} } }

Page 4: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Der Nullpointer - Beispiel 2 zur Nutzung -

public class ListElement {Object wert;ListElement naechster = null;

public ListElement( Object wert){this.wert = wert;

}

public void fuege_an( Object wert){ListElement weiter = this;while( weiter.naechster != null){

weiter = weiter.naechster;}weiter.naechster = new ListElement( wert);

}}

Page 5: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Der Nullpointer- Beispiel 2 zur Nutzung -

public class ListElement {

...

public Object gib_Wert_von( int id)throws ArrayIndexOutOfBoundsException {

ListElement weiter = this;while( id > 0){

weiter = weiter.naechster;if( weiter == null){

throw( new ArrayIndexOutOfBoundsException());}id--;

}return( weiter.wert);

}}

Page 6: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Graphical User Interface‘s

Page 7: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

eigenständige Anwendungenjavax.swing.JFrame

Anlegen : Anlegen :

Über das Menü (in Forte): 1. Datei -> Neu2. im sich öffenden Fenster „Templates“ den Ordner

„Swing Forms“ öffnen und „JFrame“ auswählen und weiter mit Next

3. den Namen eingeben (, eventuell das Package (Verzeichnis) in dem die neu Klasse liegen soll auswählen) und mit Finish das Erzeugen abschließen

4. es öffnet sich automatisch die Forte-Umgebung „GUI Editing“

Page 8: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

GUI Editing

Explorer [Filesystem]

Page 9: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

GUI Editing

Source Editor

Der Quellcode: Klasse.java

schreib geschützterBereich

Page 10: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

GUI Editing

ComponentInspector

zur ausgewählen Form gehörende grafische Komponentenz.B. Buttons

die Eigenschaften der selektierten Komponente

Page 11: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

GUI Editing

Form

Darstellung desAussehens derOberfläche

GUI Komponentengruppen Layouts und Rahmen

Auswahlobjekte,sie können durch anklicken des Symbolsund dann anklicken des Form-Fensters der Oberfläche hinzugefügt werden

Page 12: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Layout Manager

Button 1

ohne Layout Manager :

AnwendungAussehen :Aussehen :

Anwendung

Hinzufügen eines ButtonsAktion :Aktion :

Page 13: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Layout Manager

Button 2

ohne Layout Manager :

AnwendungAussehen :Aussehen :

Anwendung

Hinzufügen eines weiteren ButtonsAktion :Aktion :

Button 1

ungünstig !!wegen der Überlagerung von Button 1

Page 14: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Layout Manager

Layout Manager entscheiden über die Anordnung von Komponentenauf der zugehörigen Oberfläche

java.awt.BorderLayout

java.awt.GridLayout

CENTER

NORTH

EAST

SOUTH

WEST

[0,0] [0,1]

[1,0]

Beispiele :Beispiele :

Page 15: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

eine Oberfläche mit Layout

java.awt.BorderLayout NORTH

EAST

SOUTH

WEST

Beispiel :Beispiel :

Button 2

Button 1

Darstellung :Darstellung :Button 2

Button 1

Page 16: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

das Layout bestimmen

1. neues Layout wählen

2. auf das Form-Fenster klicken

aktives Layoutverfügbare Layouts

Page 17: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Darstellen von Textjavax.swing.JLabel

Der Nutzer hat keinen direkten Zugriffauf den Text

1. auf das JLabel-symbol klicken

2. auf das Form-Fenster klicken

Page 18: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Eingabe und darstellen von Text javax.swing.JTextField

Der Nutzer hat direkten Zugriffauf den Text

1. auf das JTextField-symbol klicken

2. auf das Form-Fenster klicken

Page 19: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Komponenten als Attribute

public class Beispiel extends javax.swing.JFrame { /** Creates new form Beispiel */ public Beispiel() { initComponents(); } ... // Variables declaration - do not modify private javax.swing.JTextField jTextField1; // End of variables declaration} eine graphische Komponente

der Konstruktor

Page 20: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Komponenten als Attribute

public class Beispiel extends javax.swing.JFrame { ... /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() { jTextField1 = new javax.swing.JTextField();

...

jTextField1.setText("jTextField1"); getContentPane().add( jTextField1, java.awt.BorderLayout.CENTER); pack(); } ...}

Initialisieren der Oberfläche und ihrer Elemente

Page 21: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Komponenten als Attribute

public class Beispiel extends javax.swing.JFrame { ... /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); }

/** * @param args the command line arguments */ public static void main(String args[]) { new Beispiel().show(); } ...}

Anweisungen die beim Schließender Oberfläche bearbeitet werden

die Main-Methode zum Startender GUI-Anwendung

Page 22: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Aktionen startenjavax.swing.JButton

Ein Button den man drücken kann.

Page 23: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

javax.swing.JButtonEreignisse (=Events) mit Aktionen verbinden

Ereignis = drücken des Buttons

Page 24: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

javax.swing.JbuttonActionListener

Was soll im Fall eines Ereignisses (=drücken von Button 1) gemacht werden ??

Anweisungen die ausge-

führt werden

Page 25: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

public class Beispiel extends javax.swing.JFrame { ... /** Exit the Application */ private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String text = jButton1.getText(); char[] inhalt = text.toCharArray(); text = ““; for( int i = inhalt.length - 1; i >= 0; i--){ text += inhalt[i]; } jButton1.setText( text); }

...}

Action auf KnopfdruckBeispiel: Knopftitel invertieren

Page 26: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Reaktionen auf die MausBeispiel: Fluchtframe

Sobald die Jlabel-Komponente mit demMauszeiger berührt wird, soll die ganzeOberfläche flüchten

Page 27: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Reaktionen auf die MausBeispiel: Fluchtframe

Page 28: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

public class Beispiel extends javax.swing.JFrame { ... /** Exit the Application */ private void jLabel1MouseEntered( java.awt.event.MouseEvent evt){ java.awt.Point mouse_location = evt.getPoint(); mouse_location.translate(this.getX() + 40, this.getY() +40);

this.setLocation(mouse_location); } ...}

Reaktionen auf die MausBeispiel: Fluchtframe

auslesen der Mausposition

bestimmen der neuen

Position der Anwendung

verschieben der Anwendung an

die neue Position

Page 29: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Übungsaufgabe

Buttontexter

Erstelle eine Anwendung, die aus einem Textfeld für Eingaben (JTextField) und einem Knopf (JButton) besteht. Alle beide müssen gleichzeitig sichtbar sein.

Auf Knopfdruck soll der Text aus dem Textfeld auf dem Button erscheinen.

Probiert aus, was ihr mit den „Properties/Eigenschaften“ bei den Komponenten alles anrichten könnt.

Page 30: Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit

IKG; DörschlagDörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04

Hausaufgabe

Währungsrechner

Erstelle eine Anwendung, die aus einem Textfeld für Eingaben (JTextField), einem Textfeld für Anzeigen (JLabel) und einem Knopf (JButton) besteht. Alle drei müssen gleichzeitig sichtbar sein.

Auf Knopfdruck soll der im Textfeld eingegebene Wert von Euro in Dollar umgerechnet und im anderen Textfeld angezeigt werden.