Grafische Benutzeroberflächen mit Swing (2) Christoph Broschinski, Alexander Sczyrba Jan Krüger

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Klassen - Verkettete Liste -
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Ein Beispiel in Java.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Verteilte Software - Java - Prozedurale Programmierung 1
Praktikum Systementwicklung
Java: Programmierung grafischer Oberflächen
Java: Programmierung grafischer Oberflächen
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
SWITCH - Anweisung.
MVC.
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
IF-ELSE-IF-Ketten Weiter mit PP..
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
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.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
© 2005 Pohlig – Taulien: Eine GUI für die Klasse Mathematik Kurs: Come Together 1 April 2005 Eine GUI für die Klasse Mathematik.
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Rekursive Funktionen (Fakultät)
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
AWT und JFC Abstract Windowing Toolkit
Java: Programmierung grafischer Oberflächen
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Zusammenfassung des Kapitel 6
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Java Programme nur ein bisschen objektorientiert.
Verwendung von Graphical-User-Interfaces der Bibliothek: javax.swing.*
Wie überwacht man Objekte im "Alltag" ?
Grafische Benutzeroberflächen mit Swing
Praktische Informatik 1
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Vererbung.
Hello World! Javakurs 2013 Arne Kappen
Aufgaben zu Rückgabewerten
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Allgemeine Befehle für die allgemeine Liste
Cäsar-Verschlüsselung
SS 04 Christiane Rauh Christian Hellinger
Grundkurs Informatik mit Java
Schleifen mit der Turtle
Cäsar-Verschlüsselung
«Delegierter» Methoden Schablone Funktionszeiger
Reklursive Grafiken Teil I
Implementieren von Klassen
4. Softwareentwicklung 4.0 Grafische Benutzeroberflächen
 Präsentation transkript:

Grafische Benutzeroberflächen mit Swing (2) Christoph Broschinski, Alexander Sczyrba Jan Krüger

Vorweg... ● Mehr Praktische Übung als Vorlesung... ● Prinzip des MVC anhand des Beispiel eines Taschenrechners. ● Ganz Wichtig : Fragen Fragen Fragen

Material ● WebSeite zur A&DII Vorlesung: ● Material zu den Swing-2 Folien : – Calculator.tar.gz herunterladen – auspacken : cd tar -xzf Calculator.tar.gz – Verzeichnis calculator enthält die Basisklassen zu den Folien – Klassen liegen im Package de.unibi.techfak.calculator

Model View Controller Model ViewController

Modell (1) Model ViewController ● Datenfelder ● Logik (Funktionen)

Modell (2) Operand1 Operand2 Operator Ergebnis berechne resetaddZiffer

Modell (3) public class CalculatorModel { public static final int PLUS = 0; public static final int MINUS = 1; public static final int MAL = 2; public static final int DURCH = 3; private Double operand1; private Double operand2; private Integer operator; public Double berechne(){... switch (operator) { case (CalculatorModel.PLUS): return (operand1 + operand2); break; }... }

Modell (4) public class CalculatorModel {... private StringBuffer currentBuffer = new StringBuffer();... public String addZiffer(char ziffer){ currentBuffer.append(ziffer); return currentBuffer.toString(); } public void setOperator(int operator) { if ((currentBuffer.length() > 0) && (this.operator == null)) { operand1 = Double.parseDouble(currentBuffer.toString()); currentBuffer.setLength(0); this.operator = operator; }... }

Aufgabe ● Implementiere die Klasse CalculatorModel – Double operand1; Double operand2; Integer operator; – public Double berechne(); public String addZiffer(double ziffer); public void addOperator(int operator); public void reset(); ● Tips: – Die Fkt. berechne() muss den Operand2 setzen, bevor gerechnet werden kann, d.h. der Prototyp muss entsprechend erweitert werden. – Die main(String [] args) Methode der Klasse enthält Tests, die das Modell erfüllen muss!

Präsentation (1) ● Darstellung des Modells ● Benutzerinteraktion Model View Controller

Präsentation(2) JButton JLabel * + C / - = South Center JPanel JTextField

Präsentation(3) public class CalculatorView implements JPanel{ private JTextField anzeige; public void CalculatorView() { // CalculatorModel cm = new CalculatorModel(); // CalculatorController cc = new CalculatorController(this,cm); setLayout(new BorderLayout()); anzeige = new JTextField(); add(anzeige, BorderLayout.Center);... JButton t1 = new JButton(“1”); // t1.addActionListener(cc);... } public void setAnzeige(String text){ anzeige.setText(text); }

Aufgabe Erweitere die Klasse CalculatorView um das Tastenfeld des Taschenrechners! ● (temporäres) JPanel mit GridLayout(4,5) ● JButton für '0'...'9' und '.' ● JButton für '+','-','*','/','=','C' ● Testen : import javax.JFrame; public class Calculator { public static void main (String [] args) { JFrame f = new JFrame(“Taschenrechner”); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new CalculatorView()); f.pack(); f.setVisible(true); }

Steuerung (1) ● Benutzeraktion auswerten ● Aktion ausführen ● Präsentation ändern Model View Controlle r

Steuerung (2) public class CalculatorController implements ActionListener{ private CalculatorView cv; private CalculatorModel cm; public CalculatorController(CalculatorView cv, CalculatorModel cm) { this.cv = cv; this.cm = cm; } public void actionPerformed(ActionEvent e) { String actioncommand = e.getActionCommand(); if (actioncommand.equals(“1”) { char ziffer = actioncommand.charAt(0); String value = cm.addZiffer(ziffer); cv.setAnzeige(value); } else if (..... ) {... }

Steuerung (3) public class CalculatorController implements ActionListener{ private CalculatorView cv; private CalculatorModel cm;... public void actionPerformed(ActionEvent e) {... } else if (actioncommand.equals(“+”)) { cm.setOperator(CalculatorModel.PLUS); cv.setAnzeige(“+”); } else if ( } else if (actioncommand.equals(“C”)) { cm.reset(); cv.setAnzeige(“”); }

Aufgabe ● Vervollständige die Klasse CalculatorController ● Füge Modell, Repräsentation und Controller zusammen funktioniert der Rechner ? ● Was fehlt / könnte verbessert werden ?

Ende