Grafikprogrammierung mit Java Teil 1/2

Ähnliche Dokumente
Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung

Was passiert, wenn Button "Ok?" mit Maus angeklickt?

Programmieren II. Zeichnen in Swing-Komponenten. Heusch 18 Ratz Institut für Angewandte Informatik

I. Grundlagen II. Ereignistypen III. Ereignisempfänger. Event-Handling (EH)

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Eventhandling. Delegation model Eventhandler model

11. GUI-Programmierung mit SWING Überblick

Eventhandling. Delegation model Eventhandler model

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek

Tag 9: Grafische Benutzeroberflächen

16 Zeichnen in Swing-Komponenten , Prof. Dr. D. Ratz

Java - AWT Basispraktikum SystemArchitektur WS 2008/ Atanas Dimitrov

Benutzeroberflächen. Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, Ausgabe, Menüs.

Graphische Benutzungsoberflächen

3-schichtige Informationssystem-Architektur

NTB Druckdatum:

Objektorientierte Software-Entwicklung

1. Konventionelle Ein-/Ausgabebetonte Programmierung

Vorlesung Informatik II

Konzepte objektorientierter Programmierung

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel

(C) Sortieren und Suchen mit Java.-AWT Seite 1

GUI Programmierung mit JAVA Swing

Kapitel 7: Ereignis-basierte Kommunikation

Einführung in JAVA. Low-Level-Events

Seite Architektur interaktiver Systeme. 7. Architektur interaktiver Systeme. 7.1 Entkopplung durch Sichten. Schichtenarchitektur

B1. Ein-/Ausgabebetonte Programmierung

Auswahl aus mehreren Alternativen:

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik

Abstrakte Klassen und Schnittstellen. Abstrakte Klassen und Schnittstellen. Abstrakte Klassen und Schnittstellen. Vererbung von abstrakten Methoden

Design Patterns I. Observer, Listener & MVC

7. Architektur interaktiver Systeme

Lesen Sie zuerst die Hinweise auf der Rückseite!

Programmieren II. Java-Applets. Heusch 17 Ratz 4. Institut für Angewandte Informatik

Zeichnen und animieren

Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2007 am

Einführung in die OOP mit Java

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

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt

Kurs: Programmieren in Java

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Informatik II. Aufgabe 1: Image Viewer ImageViewer.java

Ereignisse Graphikausgabe in AWT und Swing

B1. Ein-/Ausgabebetonte Programmierung

11. GUI-Programmierung mit SWING Überblick

Instrumentierung und Dekodierung

15. Ereignisse (Events)

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

B1. Ein-/Ausgabebetonte Programmierung

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

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Universität Karlsruhe (TH)

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

JAVA 3. Arbeitsblätter für die Lehrveranstaltung OOP. III. Applets und JavaScript. Das Applet-Tag:

Grundlagen der Informatik für Ingenieure I

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

Schablonen für Klassen, Interfaces oder Methoden, die noch nicht festgelegte Datentypen verwenden

Kapitel X - Zeichnen mit Java2D

6. Eventhandling in Java

Graphische Nutzerschnittstellen

Funktionale und Objekt-Orientierte Programmierkonzepte

Kapitel 8: Grafische Benutzerschnittstellen

GUI Programmierung in Java

Ereignisverwaltung und Layout-Typen

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Einstieg in die Informatik mit Java

Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301

Graphische Nutzerschnittstellen

Aufgabe 5.1 (Laboraufgabe, Nocheinmal ein wenig Graphik)

Klausur zur Informatik A WS 2001/2002 Name: Korrektor: Punkte: a) Zeichnen Sie zu der nachstehenden Syntax in EBNF die passenden Syntaxdiagramme.

Automation of Java and Java Applications (GUI, awt)

24. Textausgabe in Java. Vorgetragen von Rüdiger Heidenreich

GUIs in Java und ihre Programmierung

Grundlagen der Informatik für Ingenieure I

Einbindung der Tastatur

Probeklausur Informatik 2 Sommersemester 2013

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

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

public class Beispiel1 extends Frame {

B2. 2D-Computergrafik mit Java

Kapitel 10. Event Handling 10.1 MVC

Musterübung 09: Vererbung und Dynamische Bindung

Grafische Oberflächen und ihre Programmierung

Aufbau einer typischen Java-Datei

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

Grundlagen der Informatik für Ingenieure I

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Betreutes Programmieren Vorlesung Informatik II, Blatt 11

Einführung in Java, Teil 5

Computergrafik 2016 Oliver Vornberger. Kapitel 02: Grafische Benutzeroberflächen

GUI-Programmierung mit Java. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 11: GUI 1: AWT (1) GUI-Programmierung mit Java.

'($)*'+ $, *$+*$'- $..$+/, 01.2$, 2*$0, - $'($)*'+ $, *$+*$

Wiederholung. Klassenhierarchie:

Einführung in die Programmierung für NF. Übung 08

Transkript:

Grafikprogrammierung mit Java Teil 1/2 Martin Tischmann 15. Juni 2009

Inhaltsverzeichnis Das Abstract Windowing Toolkit Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen eines Fensters Ereignisse Linie Rechteck Polygon Kreis Kreisbogen Linien- oder Füllmodus

Grafikbibliothek - Abstract Windowing Toolkit (AWT) ab JDK 1.0

Grafikbibliothek - Abstract Windowing Toolkit (AWT) ab JDK 1.0 Grafische Primitvoperationen zum Zeichnen von Linien oder Füllen von Flächen und zur Ausgabe von Text

Grafikbibliothek - Abstract Windowing Toolkit (AWT) ab JDK 1.0 Grafische Primitvoperationen zum Zeichnen von Linien oder Füllen von Flächen und zur Ausgabe von Text Methoden zur Steuerung des Programmablaufs auf Basis von Nachrichten für Tastatur-, Maus- und Fensterereignisse

Grafikbibliothek - Abstract Windowing Toolkit (AWT) ab JDK 1.0 Grafische Primitvoperationen zum Zeichnen von Linien oder Füllen von Flächen und zur Ausgabe von Text Methoden zur Steuerung des Programmablaufs auf Basis von Nachrichten für Tastatur-, Maus- und Fensterereignisse Dialogelemente zur Kommunikation mit dem Anwender und Funktionen zum portablen Design von Dialogboxen

Grafikbibliothek - Abstract Windowing Toolkit (AWT) ab JDK 1.0 Grafische Primitvoperationen zum Zeichnen von Linien oder Füllen von Flächen und zur Ausgabe von Text Methoden zur Steuerung des Programmablaufs auf Basis von Nachrichten für Tastatur-, Maus- und Fensterereignisse Dialogelemente zur Kommunikation mit dem Anwender und Funktionen zum portablen Design von Dialogboxen Fortgeschrittenere Grafikfunktionen zur Darstellung und Manipulation von Bitmaps und zur Ausgabe von Sound

Grafikbibliothek - Abstract Windowing Toolkit (AWT) ab JDK 1.0 Grafische Primitvoperationen zum Zeichnen von Linien oder Füllen von Flächen und zur Ausgabe von Text Methoden zur Steuerung des Programmablaufs auf Basis von Nachrichten für Tastatur-, Maus- und Fensterereignisse Dialogelemente zur Kommunikation mit dem Anwender und Funktionen zum portablen Design von Dialogboxen Fortgeschrittenere Grafikfunktionen zur Darstellung und Manipulation von Bitmaps und zur Ausgabe von Sound

Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen eines Fensters Ereignisse Inhaltsverzeichnis Das Abstract Windowing Toolkit Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen eines Fensters Ereignisse Linie Rechteck Polygon Kreis Kreisbogen Linien- oder Füllmodus

Anlegen eines Fensters Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen eines Fensters Ereignisse import java.awt. ; class EinfachesFenster { public static void main(string[] args) { Frame fenster = new Frame( Einfaches Fenster ); fenster.setsize(400,300); fenster.setvisible(true);

Die Methode paint Das Abstract Windowing Toolkit Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen eines Fensters Ereignisse import java.awt. ; import java.awt.event. ; public class Fenster extends Frame { public Fenster() { setsize( 500, 100 ); @Override public void paint( Graphics g ) { g.drawstring( \ Maja, wo bist du?\ (Mittermeier), 120, 60 ); public static void main( String[] args ) { new Fenster().setVisible( true );

Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen eines Fensters Ereignisse Das grafische Koordinatensystem getinsets().left getinsets().top getinsets().right getinsets().bottom

Schließen eines Fensters Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen eines Fensters Ereignisse public abstract class WindowAdapter extends Object implements EventListener, WindowListener, WindowStateListener, WindowFocusListener public Fenster() { setsize( 500, 100 ); addwindowlistener( new WindowAdapter() { @Override public void windowclosing ( WindowEvent e ) { System.exit( 0 ); );

Ereignisse Das Abstract Windowing Toolkit Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen eines Fensters Ereignisse Method windowactivated windowclosed windowclosing windowdeactivated windowdeiconified windowgainedfocus windowiconified windowlostfocus windowopened windowstatechanged Invoked when window is activated window has been closed window is in the process of being closed window is de-activated window is de-iconified window is set to be the focused Window window is iconified window is no longer the focused window window has been opened window state is changed

Ereignisse Das Abstract Windowing Toolkit Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen eines Fensters Ereignisse Listener Interface Methoden Auslösende Aktion(en) MouseListener mouseclicked wurde gedrückt und wieder losgelassen mouseentered Der Mauszeiger betritt die Komponente mouseexited Der Mauszeiger verlässt die Komponente mousepressed Eine Maustaste wurde gedrückt mousereleased Eine Maustaste wurde losgelassen MouseMotionListener mousedragged wurde bei gedrückter Taste bewegt mousemoved wurde nur bewegt KeyListener keypressed Eine Taste wurde gedrückt keyreleased Eine Taste wurde losgelassen keytyped wurde gedrückt und wieder losgelassen

Linie Rechteck Polygon Kreis Kreisbogen Inhaltsverzeichnis Das Abstract Windowing Toolkit Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen eines Fensters Ereignisse Linie Rechteck Polygon Kreis Kreisbogen Linien- oder Füllmodus

Linie Das Abstract Windowing Toolkit Linie Rechteck Polygon Kreis Kreisbogen public void drawline(int x1, int y1, int x2, int y2) public void paint(graphics g) { int i; int x = 80; for (i=0; i<60; ++i) { g.drawline(x,40,x,100); x += 1+3 Math.random();

Rechteck Das Abstract Windowing Toolkit Linie Rechteck Polygon Kreis Kreisbogen public void drawrect(int x, int y, int width, int height) public void paint(graphics g) { g.drawrect(30, 30, 100, 50);

Rechteck Das Abstract Windowing Toolkit Linie Rechteck Polygon Kreis Kreisbogen public void abstract drawroundrect( int x, y, int width, height, int arcwidth, archeight ) public void paint(graphics g) { g.drawroundrect(30, 30, 100, 50, 50, 15);

Polygon Das Abstract Windowing Toolkit Linie Rechteck Polygon Kreis Kreisbogen public void Polygon(int[] arx, int[] ary, int cnt) public void paint(graphics g) { int[] arx = {50,50,120,120,80,80,100,100,80,80; int[] ary = {170,40,40,70,70,100,100,130,130,170; g.drawpolygon(arx,ary,arx.length);

Kreis Das Abstract Windowing Toolkit Linie Rechteck Polygon Kreis Kreisbogen public void drawoval(int x, int y, int width, int height) public void paint(graphics g) { int r = 8; int i, j; int x, y; for (i=1; i<=10; ++i) { x = 150 r i; y = (int) (40 + (i 1) 1.7321 r); for (j=1; j<=i; ++j) { g.drawoval(x,y,2 r,2 r); x += 2 r;

Kreisbogen Das Abstract Windowing Toolkit Linie Rechteck Polygon Kreis Kreisbogen public void drawarc( int x, int y, int width, int height, int startangle, int arcangle) public void paint(graphics g) { int line = 4; int gap = 3;int angle = 0; while (angle < 360) { g.drawarc(20,40,250,140,angle,line); angle += gap + line;

Linien- oder Füllmodus Inhaltsverzeichnis Das Abstract Windowing Toolkit Anlegen eines Fensters Die Methode paint Das grafische Koordinatensystem Schließen eines Fensters Ereignisse Linie Rechteck Polygon Kreis Kreisbogen Linien- oder Füllmodus

Linien- oder Füllmodus Linien- oder Füllmodus Mit Ausnahme von drawline können alle vorgestellten Routinen entweder im Linien- oder im Füllmodus verwendet werden. public void fillrect(int x, int y, int w, int h) public void fillroundrect(int x, int y, int w, int h, int xr, int yr) public void fillpolygon(int[] arx, int[] ary, int cnt) public void fillpolygon(polygon p) public void filloval(int x, int y, int width, int height) public void fillarc(int x, int y, int width, int height,int startangle, int arcangle)

Linien- oder Füllmodus Die Klasse Graphics stellt auch einige Methoden zum Bearbeiten bereits gezeichneter Flächen zur Verfügung. Diese erlauben es beispielsweise, einen rechteckigen Ausschnitt des Ausgabefensters zu löschen oder zu kopieren: public void clearrect( int x, int y, int width, int height ) public void copyarea( int x, int y, int width, int height, int dx, int dy )

Linien- oder Füllmodus Beispiel: public void paint(graphics g) { int xorg = 4; int yorg = 28; int[] arx = {0,6,6,2,2,4,4,0,0; int[] ary = {0,0,6,6,4,4,2,2,8; for (int i = 0; i < arx.length; ++i) { arx[i] += xorg; ary[i] += yorg; g.drawpolyline(arx,ary,arx.length); for (int x = 0; x <= 300; x += 8) { for (int y = 0; y <= 160; y += 8) { if (x!= 0 y!= 0) { g.copyarea(xorg,yorg,8,8,x,y);

Linien- oder Füllmodus

Linien- oder Füllmodus Jeder Grafikkontext hat eine zugeordnete Clipping-Region, die dazu dient, die Ausgabe auf einen bestimmten Bereich einzugrenzen. So wird beispielsweise verhindert, dass wichtige Teile eines Fensters, wie z.b. der Rahmen oder die Menüzeile, von den Ausgabeoperationen des Programms überschrieben werden. public void cliprect(int x, int y, int width, int height) public abstract void setclip(int x, int y, int width, int height) public abstract Rectangle getclipbounds()

Linien- oder Füllmodus public void paint(graphics g) { int[] arx = { 150, 175, 200, 150 ; int[] ary = { 100, 150, 100, 100 ; g.setclip(50, 50, 150, 80); // J g.fillrect(70, 40, 20, 80); g.fillarc(30, 90, 60, 60, 225, 180); // a g.filloval(100, 100, 40, 50); g.fillrect(120, 100, 20, 50); // v g.fillpolygon(arx, ary, arx.length); // a g.filloval(210, 100, 40, 50); g.fillrect(230, 100, 20, 50);

Linien- oder Füllmodus Abbildung: ohne g.setclip(50, 50, 150, 80);

Linien- oder Füllmodus Abbildung: mit g.setclip(50, 50, 150, 80);