Das Zeichenprogramm EMMA3.01 03 - Paint Aufgabenstellung !Entwicklung eines ausschließlich in JAVA programmierten Graphikprogrammes. !Vergleichsprodukte: Photoshop, MS Paint, … 03 - Paint 2 Bestandteile !GUI – Graphical User Interface •Dient der Kommunikation zwischen Nutzer und Programm •Stellt die Werkzeuge zur Erzeugung und Bearbeitung der Graphiken zur Verfügung •Vermittelt die Kommunikation zwischen Programm und Rechner •Online-Hilfe (Tooltips) •Updateservice •Konfigurationen speichern und lesen •Anpassung an Umgebung 03 - Paint 3 !Graphische Objekte •Speichern die Informationen über die zu manipulierenden Graphikobjekte •Einfache graphische Objekte (Punkt, Linie, Kreis, Texte u.s.w) •Zusammengesetzte graphische Objekte (Ebenen, Gruppen) •Einzelne Bilder bestehend aus mehreren zusammengesetzten Objekten •Bildsequenzen bestehend aus mehreren Bildern •Präsentationen aus Animationen von Bildsequenzen •Metainformationen •Besitzen das Wissen über die eigene graphische Darstellung 03 - Paint 4 !Werkzeuge •Vermitteln die Möglichkeit graphische Objekte •zu erzeugen, •zu manipulieren, •zu modifizieren und •zu löschen. •Pinsel, Stifte, Sprayflaschen, Radiergummis u.s.w. •Auswahlwerkzeuge •Farbdefinitionen •Cut and Paste •Hilfslinien •Transformationen (Drehen, Verschieben, Vergrößern, Spiegeln u.s.w.) •Filtern von Bildern (Weichzeichner, Scharfzeichner, Farbfilter u.s.w.) •Einfügen anderer Graphiken im eigenen Format oder in Fremdformaten 03 - Paint 5 !Zusätzliche Funktionen •Speichern und Lesen im internen Format auf Datenträgern •Export und Import in Fremdformaten (GIF, JPEG, MPEG u.s.w.) •Drucken •Scannerimport •Programmgenerierung •Erweiterbarkeit, Hinzufügen von •graphische Objekten •Werkzeugen •Formaten •Funktionen 03 - Paint 6 GUI !Wie soll das Programm verwendet werden? •Als eigenständige Applikation (JFrame) •Als Applet im Browser (JApplet) •Als eingebettete Applikation (JInternalFrame) !Gemeinsamkeit der drei Klassen: •Es existiert ein ContentPane, die mit der Methode setContentPane(Container) überschrieben werden kann. •Von Container abgeleitet ist JComponent die oberste SWING-Klasse. "EMMA301 wird als Klasse von JComponent abgeleitet 03 - Paint 7 import javax.swing.*; Import java.awt.*; public class EMMA301 extends JComponent { public EMMA301() { setBackground(Color.green); } } 03 - Paint 8 EMMA301 als Applikation import javax.swing.*; import java.awt.*; public class ApplicationEMMA { public static void main(String[] args) { JFrame fr = new JFrame( "Test von EMMA3.01 als Applikation"); fr.setContentPane(new EMMA301()); fr.setSize(new Dimension(800,600)); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fr.setVisible(true); } } 03 - Paint 9 EMMA301 als Applet import javax.swing.*; public class AppletEMMA extends JApplet { public void init() { setContentPane(new EMMA301()); } } 03 - Paint 10 EMMA301 als interne Applikation import javax.swing.*; import java.awt.*; public class InternalEMMA { public static void main(String[] args) { JFrame fr = new JFrame("Test von EMMA3.01 als interne Applikation"); JDesktopPane desk = new JDesktopPane(); fr.setContentPane(desk); JInternalFrame ifr = new JInternalFrame(); desk.add(ifr); ifr.setContentPane(new EMMA301()); ifr.setSize(new Dimension(400,400)); ifr.setVisible(true); ifr.setClosable(true); ifr.setIconifiable(true); ifr.setMaximizable(true); ifr.setResizable(true); fr.setSize(new Dimension(800,600)); fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fr.setVisible(true); } } 03 - Paint 11