11. GUI-Programmierung mit SWING Überblick

Ähnliche Dokumente
Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

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

11. GUI-Programmierung mit SWING Überblick

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

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

11. GUI-Programmierung mit SWING Überblick

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

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

Kapitel 8: Grafische Benutzerschnittstellen

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

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

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

Universität Karlsruhe (TH)

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

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

Programmiertechnik GUI Programmierung mit Java Swing

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

Kapitel X - Zeichnen mit Java2D

Liste Programmieren Java Überblick

11. GUI-Programmierung mit SWING Überblick

Graphical User Interfaces

Layout und Paint. Die Layout und Paint Strategie in AWT/Swing Containern. Prof. Dr. Nikolaus Wulff

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

Objektorientierte Software-Entwicklung

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Softwaretechnik Programmieren von GUIs mit Swing

Ereignisse (Events) in Java

Institut für Informatik

Eingabe von Texten. Vorlesung Software-Entwicklung / Folie 101

11. GUI-Programmierung mit SWING Überblick

7. Architektur interaktiver Systeme

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

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

GUI Programmierung in Java

Grafische Benutzeroberflächen mit Swing

NTB Druckdatum:

Konzepte objektorientierter Programmierung

Objektorientierte Programmierung

Aufgabe Malen zum Software-Engineering. Karl Friedrich Gebhardt

GUI Programmierung mit JAVA Swing

Lösungen. 1. Aufgabe. // ActionExample.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.

Objektorientierte Programmierung Studiengang Medieninformatik

Funktionale und Objekt-Orientierte Programmierkonzepte

Verteidigung Großer Beleg

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

1. Konventionelle Ein-/Ausgabebetonte Programmierung

Praktikum 4: Grafiken und Ereignisse

!!!" # $ # %&' $ ' ( )

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

Javakurs für Fortgeschrittene

JAVA2D OKTOBER package at.ac.wuwien.examples.swingdemo; 3 import javax.swing.*; 5 public class SimpleGUI extends JFrame {

Graphische Oberflächen Teil 1

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

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Einführung in GUI-Programmierung. javax.swing

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

Medientechnik. Übung 2 Java Swing

Programmieren 2 Selbststudium Semesterwoche 4

Ereignisse Graphikausgabe in AWT und Swing

Hochschule der Medien Prof. Uwe Schulz 13. Juli 2009 Klausur Informatik, EDV-Nr Seite 1 von 6. Teil 2: Aufgaben

Grundlagen der Programmierung APPLETS

Probeklausur: Programmierung WS04/05

Graphische Oberflächen Teil 1

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Programmieren II. Die Klasse JList. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester JList.

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

Eventhandling. Delegation model Eventhandler model

Techniken der Projektentwicklung

Einführung in die Programmierung Blockkurs Java

Swing. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

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

Dr. Monika Meiler. Inhalt

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Einstieg in die Informatik mit Java

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing

import java.awt.*; import java.awt.event.*; import javax.swing.*;

JList JTable Layout-Manager GridBagLayout. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Info B VL 11: Innere Klassen/Collections

Institut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur

Eventhandling. Delegation model Eventhandler model

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

Abstrakte Klassen, Interfaces

double size[][] = {{10.0, 400.0, 20.0, 160.0, 20.0, 400.0, 10.0}, // Columns {10.0, 500.0, 20.0, 180.0, 10.0}}; // Rows

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Softwarepraktikum: Enigma

Dr. Monika Meiler. Inhalt

Grafische Benutzeroberflächen

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

Instrumentierung und Dekodierung

Course IPJava: Image Processing with Java Chapter C4: The Lowpass Project

Java Einführung Abstrakte Klassen und Interfaces

Einführung in GUI-Programmierung. javax.swing

Transkript:

11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing Komponenten Prof. Dr. Björn Dreher Liste Programmieren - Java 548 11. GUI-Programmierung mit SWING Überblick: 11.4. Zeichnen 11.4.1 Der Java graphische Context Prof. Dr. Björn Dreher Liste Programmieren - Java 549

11.4.1 Der Java graphische Kontext Basis Klassen für 2D-Darstellungen Graphics Color Font FontMetrics Polygon Java2D API BasicStroke GradientPaint TexturePaint GeneralPath Arc2D, Ellipse2D, Line2D, Rectangle2D, RoundRectangle2D Prof. Dr. Björn Dreher Liste Programmieren - Java 550 11.4.1 Der Java graphische Kontext Koordinatensystem (0, 0) +x x-achse (x, y) +y y-achse Ausgangspunkt: Linke obere Ecke Einheit: Pixel Prof. Dr. Björn Dreher Liste Programmieren - Java 551

11.4.1 Der Java graphische Kontext Graphischer Kontext Graphics Objekt Methoden zum Zeichnen Font-Manipulation Farbwahl, usw. Zum Zeichnen wird oft die Methode paint(graphics g) aufgerufen paint() kann überschrieben werden Im Innern kann dann g zum Zeichnen benutzt werden Wird normalerweise indirekt über repaint() aufgerufen Graphics ist eine abstrakte Klasse Konkrete Klasse realisiert die Schnittstelle für die Zielplattform (Windows, Unix, Mac) Bei Swing ist es tatsächlich eine Instanz von Graphics2D Unterstützt zusätzlich 2D-API, Nachfahre von Graphics Prof. Dr. Björn Dreher Liste Programmieren - Java 552 11. GUI-Programmierung mit SWING Überblick: 11.4. Zeichnen 11.4.1 Der Java graphische Context Prof. Dr. Björn Dreher Liste Programmieren - Java 553

JPanel Normalerweise ein Aggregat für andere Swing Komponenten Kann auch Zeichenoberflächen und mausempfindliche Bereiche definieren Vermeidung von Konflikten zwischen direkter Verwendung von Graphics und GUI-Komponenten Methode paint() Nur von der Swing-Laufzeitumgebung aufgerufen, niemals direkt aus Benutzercode Stattdessen repaint() Bittet Swing, die Komponente bei nächster Gelegenheit sich zeichnen zu lassen Prof. Dr. Björn Dreher Liste Programmieren - Java 554 JPanel Methode paint() (fortgesetzt) Zeichnet die Komponente selbst und alle darin enthaltenen Unterkomponenten Delegiert den paint()-aufruf an diese weiter Überschreibt man paint(), muss man unbedingt zuerst die geerbte Methode aufrufen Klassen, die von JComponent abstammen, enthalten Methode paintcomponent() Zeichnet nur die eigene Komponente Man muss sich um enthaltene Komponemten nicht kümmern Diese Methode sollte überschrieben werden, um innerhalb des Panels zu zeichnen Zuvor sollte die geerbte Methode aufgerufen werden Prof. Dr. Björn Dreher Liste Programmieren - Java 555

JPanel JComponent unterstützt Transparenz und deren Nachfahren sollten das auch tun Gesteuert durch Methode setopaque() Parameter false: Komponente ist transparent Richtige Handhabung in JComponent s Methode paintcomponent() Transparent: Hintergrund bleibt unverändert Opaque: Hintergrund wird gelöscht Daher muss geerbtes paintcomponent() unbedingt aufgerufen werden Prof. Dr. Björn Dreher Liste Programmieren - Java 556 Wann wird Komponente neu gezeichnet? Swing-Komponenten Methode repaint(): Komponente soll sobald wie möglich neu gezeichnet werden: Drei einzelne Methoden (in dieser Reihenfolge): paintcomponent Hauptmethode zum Zeichnen paintborder Zeichnet die Umrandung (falls es eine gibt). Nicht überschreiben! paintchildren Veranlasst jede Komponente, die in der eigenen enthalten ist, sich selbst zu zeichnen. Nicht überschreiben! AWT-Komponenten Methode repaint() Methode update() von Component wird aufgerufen Löscht Hintergrund der Komponente Ruft ihrerseits Methode paint() Prof. Dr. Björn Dreher Liste Programmieren - Java 557

CustomPanel public class CustomPanel extends JPanel { public final static int CIRCLE = 1, SQUARE = 2; private int shape; // use shape to draw an oval or rectangle public void paintcomponent( Graphics g ) { super.paintcomponent( g ); if ( shape == CIRCLE ) g.filloval( 50, 10, 60, 60 ); else if ( shape == SQUARE ) g.fillrect( 50, 10, 60, 60 ); // set shape value and repaint CustomPanel public void draw( int shapetodraw ) { shape = shapetodraw; repaint(); // end class CustomPanel Prof. Dr. Björn Dreher Liste Programmieren - Java 558 11. GUI-Programmierung mit SWING Überblick: 11.4. Zeichnen 11.4.1 Der Java graphische Context Prof. Dr. Björn Dreher Liste Programmieren - Java 559

CustomPanelTest public class CustomPanelTest extends JFrame { private JPanel buttonpanel; private CustomPanel mypanel; private JButton circlebutton, squarebutton; // set up GUI public CustomPanelTest() { super( "CustomPanel Test" ); // create custom drawing area mypanel = new CustomPanel(); mypanel.setbackground( Color.green ); // set up squarebutton squarebutton = new JButton( "Square" ); Prof. Dr. Björn Dreher Liste Programmieren - Java 560 CustomPanelTest (fortgesetzt) squarebutton.addactionlistener( // anonymous inner class to handle // squarebutton events new ActionListener() { // draw a square public void actionperformed( ActionEvent event ) { mypanel.draw( CustomPanel.SQUARE ); // end anonymous inner class ); // end call to addactionlistener Prof. Dr. Björn Dreher Liste Programmieren - Java 561

CustomPanelTest (fortgesetzt) circlebutton = new JButton( "Circle" ); circlebutton.addactionlistener( // anonymous inner class to handle // circlebutton events new ActionListener() { // draw a circle public void actionperformed( ActionEvent event ) { mypanel.draw( CustomPanel.CIRCLE ); // end anonymous inner class ); // end call to addactionlistener Prof. Dr. Björn Dreher Liste Programmieren - Java 562 CustomPanelTest (fortgesetzt) // set up panel containing buttons buttonpanel = new JPanel(); buttonpanel.setlayout( new GridLayout( 1, 2 ) ); buttonpanel.add( circlebutton ); buttonpanel.add( squarebutton ); // attach button panel & custom drawing area to // content pane Container container = getcontentpane(); container.add( mypanel, BorderLayout.CENTER ); container.add( buttonpanel, BorderLayout.SOUTH ); Default ist BorderLayout setsize( 300, 150 ); setvisible( true ); Prof. Dr. Björn Dreher Liste Programmieren - Java 563

CustomPanelTest (fortgesetzt) // execute application public static void main( String args[] ) { CustomPanelTest application = new CustomPanelTest(); application.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); // end class CustomPanelTest Prof. Dr. Björn Dreher Liste Programmieren - Java 564 Ergebnis Prof. Dr. Björn Dreher Liste Programmieren - Java 565