Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,...
-
Upload
siegfrid-affolter -
Category
Documents
-
view
120 -
download
0
Transcript of Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,...
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
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
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;
} } }
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);
}}
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);
}}
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
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“
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]
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
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
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
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 :
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
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 :
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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.
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.