Praktikum 4: Grafiken und Ereignisse

Ähnliche Dokumente
Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Allgemeines - Prinzipien

Einstieg in die Informatik mit Java

Praktikum 1: Einführung, BMI Rechner

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

Probeklausur Informatik 2 Sommersemester 2013

Arrays. Einleitung. Deklarieren einer Array Variablen

Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw.

Teil 2: Weitere Aspekte der Objektorientierung

Java Kurzreferenz Für Fortgeschrittene

V by WBR1/BFH-TI 2011 by MOU2/BFH-TI

1 Klassen und Objekte

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

7.5 Mit bunten Kreisen spielen

10.4 Konstante Objekte

Arbeitsblatt 5 EAD II NetBeans

Fragen zur OOP in Java

Beispielprüfung CuP WS 2015/2016

Drucken. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Implementieren von Klassen

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

Java - AWT Basispraktikum SystemArchitektur WS 2008/ Atanas Dimitrov

11. GUI-Programmierung mit SWING Überblick

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

Probeklausur: Programmierung WS04/05

Fachhochschule Stuttgart Prof. Uwe Schulz 5. Juli 2006 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4

Objektorientierte Programmierung Studiengang Medieninformatik

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Instrumentierung und Dekodierung

- EINSTIEG IN JAVA - (1/5) Datum:

Javakurs für Anfänger

Einführung in die Programmierung 1

Java Einführung Vererbung und Polymorphie. Kapitel 13

Javakurs 2013 Objektorientierung

Einführung in die Informatik - Teil 6a -

C++ - Objektorientierte Programmierung Konstante und statische Elemente

Ereignisse (Events) in Java

Tag 7 Repetitorium Informatik (Java)

Kapitel 8: Grafische Benutzerschnittstellen

Anregungen zu Übung 2

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Konstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; }

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

JLabel. dient zur Textanzeige. können auch Bilder anzeigen: mylabel.seticon( new ImageIcon( C:/Pfad/zum/Bild.jpg )

Universität Potsdam Institut für Informatik Sommersemester Programmierung. Lehrblatt Woche 11

Softwareentwicklung II (IB) Blatt 3. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Repetitorium Informatik (Java)

1 - EIN NEUES GAMEGRID ANLEGEN

12 Abstrakte Klassen, finale Klassen und Interfaces

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Javakurs für Anfänger

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Klassenvariablen und statische Methoden

Wiederholung. Klassenhierarchie:

Java Lab 2006/12/13 Client

Probeklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java im Wintersemester 2017/18

Organisatorisches. Ersatztermine UE: - Gruppe 1: Di, , 18:00-19:30 - Gruppe 2: Mi, , 18:00-19:30. VO am

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

Institut für Informatik

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Klassenvariablen und statische Methoden

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2)

Graphical User Interfaces

Eingabe von Texten. Vorlesung Software-Entwicklung / Folie 101

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und

Javakurs für Anfänger

Abstrakte Klassen, Interfaces

Klassenvariablen, Klassenmethoden

7. Arrays. Beim Deklarieren und Initialisieren der Liste bräuchte man oft zueinander sehr ähnlichen Code:

Tag 8 Repetitorium Informatik (Java)

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Created by Michael Kirsch & Beat Rossmy

Java Einführung Methoden. Kapitel 6

Algorithmen und Datenstrukturen

Aufgabe 5.1 (Laboraufgabe, Nocheinmal ein wenig Graphik)

Erste Java-Programme (Scopes und Rekursion)

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

Einstieg in die Informatik mit Java

hue13 January 30, 2017

Programmierung für Mathematik HS11

Grundlagen der Programmierung

Unterprogramme. AnPr. Wiederholungen im Code werden vermieden. Programme werden leichter lesbar. Die Entwicklung und der Test werden vereinfacht.

Fakultät IV Elektrotechnik/Informatik

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Praktische Informatik I Wintersemester 2005/2006 Abgabe: 23. November 2005

C++ - Objektorientierte Programmierung Polymorphie

Programmierung für Mathematik HS10

Umsetzung einer Klassenkarte in einer Programmiersprache

Anwendung Kamel-Simulation

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Transkript:

Praktikum 4: Grafiken und Ereignisse Aufgabe 1: Java Applikation Bisher haben wir in Java (ebenso wie in C) jeweils selbständige Konsole-Applikationen erstellt. Java wurde als Programmiersprache für das Internet konzipiert. Java-Programme können auf zwei Arten ausgeführt werden: Applets: Das sind Java-Programme, die in Webseiten eingebettet sind und gemeinsam mit der Webseite von einem Server geladen werden. Diese Programme werden als Klassen- Dateien (Endung.class) auf dem Server zusammen mit der Webseite (HTML-Datei) gespeichert und (ähnlich wie Bilddateien) dann in den Browser des Client-Rechners geladen und in der Webseite angezeigt. Der Browser stellt das Fenster für die Ausgabe sowie die JVM zur Verfügung. Applets werden heute nicht mehr verwendet (R.I.P.) Selbständige Applikationen: Vergleichbar mit den C-Programmen, aber auch graphische Applikationen sind möglich. Schreiben Sie eine Applikation, die folgende Ausgabe erstellt. Gehen Sie dabei von der Hello.java Vorlage aus (siehe auch Vorlesungsfolien) Gerrit Burkert, Karl Rege 22.03.16 1

Aufgabe 2: Ballon-Grafiken Erstellen Sie eine Ballon-Klasse (siehe Folien). Statt direkt die Graphik in der Paint-Methode zu zeichnen, soll ein Ballon Objekt erstellt werden und die draw-methode des Ballons aufgerufen werden. Erste Version Die Methode initcomponents wird von der main-methode aufgerufen. Sie kann verwendet werden, um das Ballon-Objekt zu erstellen. Das neue Ballon Objekt soll dann in einer Instanzvariablen Ballon ballon gespeichert werden. In der paint-methode des Frames wird dann die draw- Methode des Ballons aufgerufen und das Graphics Objekt übergeben. Zweite Version Es soll zusätzlich ein Zähler dargestellt werden; dieser Zähler soll als eine private Instanzvariablen counter von Ballon gespeichert sein. Es soll eine Methode void erhöhezähler() der Ballon Klasse in der actionperformed-methode aufgerufen werden - bevor das Neuzeichnen ausgelöst wird. usw. Hinweis: drawstring benötigt einen String als erstes Argument. Auf einfache Weise kann man aus einer Zahl einen String machen, indem man sie an den leeren String anhängt: ""+5 ergibt den String "5". Dritte Version Es sollen mehrere Ballone gezeichnet werden; dafür müssen sie in einen Array gespeichert werden. Die Nummer soll als statische Variable von Ballon jeweils beim Konstruktor Aufruf (von Ballon) um eins erhöht werden und der Instanzvariablen zugewiesen werden. Mit folgender add- Methode (Teil des Frames) wird der neue Ballon hinzugefügt. In der paint Methode werden dann alle Ballone gezeichnet. private Ballon[] ballone = new Ballon [100]; private int count = 0; public void add(ballon b) { ballone [count] = b; count++; public void paint(graphics g) { super.paint(g); for (int i = 0; i < count; i++) { ballone [i].draw(g); Gerrit Burkert, Karl Rege 22.03.16 2

Passen Sie die Ausgabe so an, dass die Ballone zufällig im Fenster positioniert werden: Für die zufällige Position benötigen Sie eine Möglichkeit, Zufallszahlen zu erzeugen. Sehen Sie in der Java-Dokumentation nach der random-methode der Math-Klasse. Die Koordinatenangaben für filloval sind ganzzahlig. Sie sollten also noch eine Typumwandlung nach int vornehmen. Vierte Version Die Kugeln sollen nun zufällig ausgewählte Farben haben (Bild auf der nächsten Seite). Eine beliebige Farbe kann man auch auf folgende Weise erzeugt werden: new Color(0.5, 0.5, 1.0); Auf diese Weise wird ein neues Objekt der Klasse Color erzeugt. Die drei Parameter sind der Rot-, Grün- und Blauanteil der Farbe. Sie werden als double-zahlen übergeben. Mit diesen Informationen sollten Sie auch zufällige Farben erzeugen können. Math.random() liefert übrigens eine double-zahl. Auch wenn hier jeweils g.setcolor steht: Die Variable für das Graphics-Objekt könnte man jederzeit auch anders nennen als g. Gerrit Burkert, Karl Rege 22.03.16 3

Falls Sie noch weitere Dinge ausprobieren möchten: Die Kugeln könnten auch unterschiedlich gross sein. Ausserdem ist die weisse Beschriftung auf den helleren Kugeln schlecht lesbar. Könnte man erreichen, dass die dunklen Kugeln mit weisser Schrift und die helleren schwarz beschriftet werden? Aufgabe 3: Mehrere Knöpfe, Up-/Downcounter Schreiben Sie ein Frame, das eine Zahl anzeigt, die durch zwei Buttons inkrementiert und dekrementiert werden kann: Dafür müssen (statt der JButton action Variable) zwei Instanzvariablen folgendermassen deklariert werden: JButton less,more; In der initcomponents Methode müssen entsprechend zwei Knöpfe erstellt und hinzugefügt werden. private void initcomponents() {... less = new JButton("less"); panel.add(less); less.addactionlistener(this); more = new JButton("more"); Gerrit Burkert, Karl Rege 22.03.16 4

panel.add(more); more.addactionlistener(this); In der ActionPerformed Methode muss jetzt unterschieden werden, welcher Knopf das gedrückt wurde. Dafür können Sie folgendes Gerüst verwenden. public void actionperformed(actionevent e) { if (e.getsource() == less) { // dekrementiere Instanzvariable else if (e.getsource == more) { // inkrementiere Instanzvariable paint(getgraphics()); Hinweise Der angezeigte Zahlenwert value wird als Instanzenvariable (Attribut) der Klasse geführt, da von verschiedenen Methoden auf den Wert zugegriffen werden muss. Ebenso wird die Schriftart definiert. Das Schlüsselwort final legt sie als konstant fest. Ergänzen Sie oben in der Klasse noch die beiden Variablen, die später Referenzen auf die Buttons enthalten sollen. In der initcomponet()-methode wird das Frame initialisiert. Erzeugen Sie die beiden Button-Objekte (new) und fügen diese dem Applet hinzu (add). Beide Buttons müssen dann noch um einen ActionListener ergänzt werden. Dazu nehmen wir das Frame-Objekt selbst (this). Im Event Handler (actionperformed) stellen Sie fest, welcher Button das Ereignis ausgelöst hat. Die Quelle des Ereignisses bekommt man mit e.getsource(). Entsprechend wird der gespeicherte Wert inkrementiert oder dekrementiert. In der paint-methode müssen Sie nur noch die Ausgabe des Zahlenwertes ergänzen. Gerrit Burkert, Karl Rege 22.03.16 5