• Keine Ergebnisse gefunden

Java 2 JDK 5 - Grafische Anwendungen und Applets

N/A
N/A
Protected

Academic year: 2022

Aktie "Java 2 JDK 5 - Grafische Anwendungen und Applets"

Copied!
234
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

*AVA*$+

+VEJMWGLI%R[IRHYRKIRYRH%TTPIXW

.%:+%

.%:+%

%YXSV'LVMWXMER9PPIRFSSQ

/SR^ITXMSRIPPI&IEVFIMXYRK'LVMWXMER1ÚRWXIV

%YJPEKIZSQ.YPM

,IVEYWKIFIV ,)6(8:IVPEKJÚV&MPHYRKWQIHMIR+QF,

&SHIRLIMQ

-RXIVRIX[[[LIVHX]SYHIEX [[[LIVHXFYWMRIWWHIEX

[[[LIVHXZLWHIEX

1MX+IRILQMKYRKHIV+EPMPIS4VIWW+QF,&SRR ‡F]+EPMPIS4VIWW+QF,&SRR

8I\X %FFMPHYRKIR YRH 4VSKVEQQI [YVHIR QMX KVS½IV 7SVKJEPX IVEVFIMXIX :IVPEK ºFIVWIX^IV YRH %YXSVIR OÔR RIRNIHSGLJÚVIZIRXYIPPZIVFPMIFIRIJILPIVLEJXI%RKEFIR YRH HIVIR *SPKIR [IHIV IMRI NYVMWXMWGLI :IVERX[SVXYRK RSGL MVKIRHIMRI ,EJXYRK ÚFIVRILQIR (MI ZSVPMIKIRHI 4YFPMOEXMSRMWXYVLIFIVVIGLXPMGLKIWGLÚX^X

%PPI 6IGLXI ZSVFILEPXIR /IMR 8IMP HMIWIW 4VSHYOXIW HEVJ SLRI WGLVMJXPMGLI +IRILQMKYRK HIW :IVPEKIW MR MVKIRH IMRIV *SVQ HYVGL /STMIVIR 1MGVSJMPQ SHIV ERHIVI :IV JELVIR VITVSHY^MIVX SHIV MR IMRI JÚV 1EWGLMRIR MRWFI WSRHIVI (EXIRZIVEVFIMXYRKWERPEKIR ZIV[IRHFEVI 7TVE GLIÚFIVXVEKIR[IVHIR%YGLHMI6IGLXIHIV;MIHIVKEFI HYVGL:SVXVEK*YROYRH*IVRWILIRWMRHZSVFILEPXIR(MI MR HMIWIQ &YGL IV[ÂLRXIR 7SJX YRH ,EVH[EVIFI^IMGL RYRKIR WMRH MR HIR QIMWXIR *ÂPPIR EYGL IMRKIXVEKIRI 1EVOIR YRH YRXIVPMIKIR EPW WSPGLI HIR KIWIX^PMGLIR

&IWXMQQYRKIR

Kantonsschule am Brühl SG

In Kooperation mit dem HERDT-Verlag stellen wir Ihnen eine PDF inkl. Zusatzmedien für Ihre persönliche Weiterbildung zur Verfügung. In Verbindung mit dem Programm HERDT-Campus ALL YOU CAN READ stehen diese PDFs nur Lehrkräften und Schüler*Innen der oben genannten Lehranstalt zur Verfügung. Eine Nutzung oder Weitergabe für andere Zwecke ist ausdrücklich verboten und unterliegt dem Urheberrecht. Jeglicher Verstoß kann zivil- und strafrechtliche Konsequenzen nach sich ziehen.

Schulversion

(2)

1 Grafikprogrammierung mit dem AWT...4

1.1 Was Sie wissen sollten ... 4

1.2 Das Abstract-Window-Toolkit ... 5

1.3 Das Toolkit ... 6

1.4 Fenster unter grafischen Oberflächen ... 6

2 Zeichnen - die grafische Darstellung ...10

2.1 Grundlegendes zum Zeichnen ... 10

2.2 Einfache Zeichenfunktionen ... 16

2.3 Zeichenketten schreiben ... 21

2.4 Clipping-Operationen ... 27

3 Farben ...30

3.1 Einleitung ... 30

3.2 Farben einsetzen ... 31

3.3 Vordefinierte Farben ... 32

3.4 Farben aus Hexadezimalzahlen erzeugen ... 33

3.5 Einen helleren oder dunkleren Farbton wählen ... 34

3.6 Farbmodelle HSB und RGB ... 35

3.7 Die Farben des Systems... 35

4 Bilder anzeigen und Grafiken verwalten....38

4.1 Bilder und Grafiken einsetzen ... 38

4.2 Bilder in Applikationen und Applets laden ... 39

4.3 Grafiken zeichnen und zentrieren ... 40

4.4 Bilder im Speicher verwalten... 42

4.5 Bilder skalieren ... 45

4.6 Programm-Icon/Fenster-Icon setzen ... 47

4.7 Grafiken mit der Klasse ImageIO verwenden ... 48

4.8 Bilder im GIF-Format speichern ... 50

4.9 JPEG-Dateien mit dem Sun-Paket schreiben ... 52

4.10 Die Java-Klassenbibliothek JIMI ... 54

5 Java 2D...56

5.1 Einführung ... 56

5.2 Das erste 2D-Programm ... 57

5.3 Geometrische Objekte durch Shape gekennzeichnet... 58

5.4 Eigenschaften geometrischer Objekte... 60

5.5 Transformationen mit einem AffineTransform-Objekt ... 65

6 Grundlagen der Ereignisbehandlung...66

6.1 Es tut sich was - Ereignisse beim AWT... 66

6.2 Events auf verschiedenen Ebenen... 67

6.3 Ereignisquellen, -senken und Horcher (Listener)... 68

6.4 Varianten, das Fenster zu schließen ... 71

7 Grundlegende Komponenten ... 76

7.1 Das AWT und Swing... 76

7.2 Die Basis aller Komponenten: Component und JComponent ... 77

7.3 Proportionales Vergrößern eines Fensters .... 80

7.4 Hinzufügen von Komponenten... 82

7.5 Das Swing-Fenster JFrame ... 82

7.6 Informationstext über die Klasse JLabel ... 84

7.7 Die Klasse ImageIcon ... 87

7.8 Eine Schaltfläche (JButton)... 90

7.9 Tooltips ... 96

7.10 Der Container JPanel... 97

8 LayoutManager ... 98

8.1 Alles Auslegungssache: die Layoutmanager ... 98

8.2 FlowLayout ... 99

8.3 BorderLayout ... 100

8.4 GridLayout ... 102

8.5 Der GridBagLayout-Manager ... 104

8.6 Null-Layout... 108

8.7 Weitere Layoutmanager... 108

9 Anzeige- und Bedienelemente... 110

9.1 Horizontale und vertikale Schieberegler... 110

9.2 JSlider... 113

9.3 Ein Auswahlmenü - Choice, JComboBox... 114

9.4 Eines aus vielen - Kontrollfelder (JCheckBox) ... 119

9.5 Kontrollfeldgruppen, Optionsfelder und JRadioButton ... 120

9.6 Der Fortschrittsbalken JProgressBar ... 122

9.7 Rahmen (Borders) ... 124

10Symbolleisten und weitere Bedienelemente ... 126

10.1 Symbolleisten alias Toolbars ... 126

10.2 Menüs ... 127

10.3 Mnemonics und Shortcuts (Accelerator) ... 129

10.4 Popup-Menüs ... 134

10.5 Das Konzept des Model-View-Controllers.... 136

10.6 List-Boxen... 138

10.7 JSpinner ... 140

10.8 Texteingabefelder ... 141

10.9 Die Editor-Klasse JEditorPane... 147

11Baumstrukturen, Tabellen und Dialoge ... 150

11.1 Bäume mit JTree-Objekten ... 150

11.2 Tabellen mit JTable... 152

11.3 Ein eigenes Tabellen-Model... 153

11.4 DefaultTableModel... 157

(3)

11.5 Ein eigener Renderer für Tabellen...157

11.6 Zell-Editoren ...160

11.7 Gestaltung einer Tabelle...161

11.8 JRootPane, JLayeredPane und JDesktopPane ...164

11.9 Dialoge ...166

12Look&Feel ...172

12.1 Flexibles Java-Look&Feel...172

12.2 Swing-Beschriftungen einer anderen Sprache geben ...174

12.3 Die Zwischenablage (Clipboard)...174

12.4 Undo durchführen ...177

12.5 Ereignisverarbeitung auf unterster Ebene...179

12.6 AWT, Swing und die Threads ...180

12.7 Selbst definierte Cursor ...184

12.8 Mausrad-Unterstützung ...186

12.9 Benutzerinteraktionen automatisieren ...186

13Drucken ...190

13.1 Einführung ...190

13.2 Ein PrintJob ...191

13.3 Drucken der Inhalte ...192

13.4 Mit speziellen Druckern arbeiten...193

14Internationalisierung und Lokalisierung ...194

14.1 Zeitzonen und Sprachen der Länder ...194

14.2 Sprachen der Länder ...197

14.3 Einfache Übersetzung durch ResourceBundle-Objekte...200

15Applets ...202

15.1 Einleitung ...202

15.2 Applets und Applikationen - wer darf was?...202

15.3 Das erste Hallo-Applet...203

15.4 Die Zyklen eines Applets ...204

15.5 Parameter an das Applet übergeben ...204

15.6 Fehler in Applets finden...206

15.7 Browserabhängiges Verhalten...207

15.8 Datenaustausch zwischen Applets ...209

15.9 Musik in einem Applet und in Applikationen...211

15.10 Webstart...213

16Komponenten durch Bohnen ...214

16.1 Grundlagen der Komponententechnik ...214

16.2 Das JavaBeans Development Kit (BDK)...216

16.3 Die kleinste Bohne der Welt ...218

16.4 Jar-Archive für Komponenten ...218

16.5 Worauf JavaBeans basieren ...220

16.6 Eigenschaften...220

16.7 Ereignisse ...223

16.8 Weitere Eigenschaften ...226

16.9 Bean-Eigenschaften anpassen...229

16.10 Property-Editoren ...230

16.11 BeanInfo...230

16.12 Beliebte Fehler ...231

Stichwortverzeichnis ...232

Schulversion

(4)

1 Grafikprogrammierung mit dem AWT

,QGLHVHP.DSLWHOHUIDKUHQ6LH

Æ ZLH6LHPLWGHU6FKXOXQJVXQWHUODJHDUEHLWHQ Æ *UXQGOHJHQGHV]XU*UDILNSURJUDPPLHUXQJPLW-DYD

Æ ZLH6LHDXIJUDILVFKHQ%HQXW]HUREHUIOlFKHQ)HQVWHUHU]HXJHQXQGDQ]HLJHQ

9RUDXVVHW]XQJHQ

9 *UXQGODJHQ]X-DYD

1.1 Was Sie wissen sollten

Aufbau der Schulungsunterlage

; 'LH*OLHGHUXQJGHU8QWHUODJHHUOHLFKWHUWGDV)HVWOHJHQGHU/HUQVFKZHUSXQNWH

; $P$QIDQJMHGHV.DSLWHOVILQGHQ6LHGLH/HUQ]LHOHLPhEHUEOLFN

; 'LH 1RWL]IHOGHU LQ GHU 6FKXOXQJVXQWHUODJH JHEHQ ,KQHQ GLH 0|JOLFKNHLW HLJHQH $QPHUNXQJHQ XQG (U NHQQWQLVVHVRZLHSUDNWLVFKH$UEHLWVWHFKQLNHQ]XYHUPHUNHQ

Typografische Konventionen

,P7H[WHUNHQQHQ6LHEHVWLPPWH3URJUDPPHOHPHQWHDQGHU)RUPDWLHUXQJ6RZHUGHQEHLVSLHOVZHLVH0HQ

SXQNWHLPPHULQ*5266%8&+67$%(1JHVFKULHEHQ

*5266%8&+67$%(1 YHUZHLVHQDXI0HQVE]Z0HQSXQNWH]%'$7(,6&+/,(66(1

.XUVLYVFKULIW NHQQ]HLFKQHWDOOHYRP$QZHQGHU]XJHZLHVHQHQ1DPHQZLH'DWHLQDPHQ2UGQHU QDPHQHLJHQH6\PEROOHLVWHQHWFVRZLH+\SHUOLQNVXQG3IDGQDPHQ

Courier new NHQQ]HLFKQHW3URJUDPPWH[W

Beispieldateien

'LHLQGHQ.DSLWHOQJH]HLJWHQ%HLVSLHOHILQGHQ6LH DOV-DYD4XHOOWH[WGDWHLHQ DXIGHU +RPHSDJHGHV+(5'7 9HUODJVLP,QWHUQHWXQWHUKWWSZZZKHUGW\RXGH

Hinweise zur Installation der Software

,Q GHQ %HVFKUHLEXQJHQ GHU 6FKXOXQJVXQWHUODJH ZLUG YRQ GHU (UVWLQVWDOODWLRQ GHU 6RIWZDUH 6XQ -DYD 3ODW IRUP6WDQGDUG(GLWLRQ-6(-'. DXVJHJDQJHQKWWSMDYDVXQFRPMVHGRZQORDGMVS'LH

%HVFKUHLEXQJHQVLQGVRZHLWP|JOLFKEHWULHEVV\VWHPXQDEKlQJLJJHKDOWHQ$OV7H[WHGLWRUZXUGHGLH(QWZLFN OXQJVXPJHEXQJ(FOLSVHKWWSZZZHFOLSVHRUJYHUZHQGHWHEHQVRODVVHQVLFKGLH%HLVSLHOSURJUDPPHDEHU DXFK PLW HLQHP 7H[WHGLWRU ZLH EHLVSLHOVZHLVH 7H[W3DG EHDUEHLWHQ GHU DOV 6KDUHZDUH XQWHU KWWSZZZWH[WSDGFRPHUKlOWOLFKLVW

(5)

1.2 Das Abstract-Window-Toolkit

(LQH 3URJUDPPLHUVSUDFKH GLH ]XP =LHO KDW SODWWIRUPXQDEKlQJLJH 6RIWZDUHHQWZLFNOXQJ ]X XQWHUVWW]HQ PXVVDXFKHLQH%LEOLRWKHNDQELHWHQGDPLWVLFKJUDILVFKH2EHUIOlFKHQJHVWDOWHQODVVHQ'LH%LEOLRWKHNPXVVLP :HVHQWOLFKHQGUHL'LQJHDEGHFNHQ

; 6LH PXVV JUDILVFKH 3ULPLWLYRSHUDWLRQHQ N|QQHQ ZLH /LQLHQ XQG 3RO\JRQH ]HLFKQHQ RGHU )DUEHQ XQG

=HLFKHQVlW]H]XZHLVHQ

; 6LH PXVV JUDILVFKH ,QWHUDNWLRQVNRPSRQHQWHQ GLH VR JHQDQQWHQ :LGJHWV :LQGRZ (OHPHQWV ZLH )HQVWHU6FKDOWIOlFKHQ7H[WIHOGHU0HQVXQG&RQWDLQHUXQWHUVWW]HQ

; 6LHPXVVHLQ0RGHOO]XU%HKDQGOXQJGHU(UHLJQLVVHGHILQLHUHQ

'D -DYD3URJUDPPH SRUWDEHO VHLQ PVVHQ HQWVWHKW VFKQHOO GDV 3UREOHP GDVV HLQH WROOH .RPSRQHQWH YRQ HLQHUEHVWLPPWHQ3ODWWIRUPQLFKWXQWHUVWW]WZLUGXQGHLQDQGHUHV)HDWXUHZLHGHUXPYRQHLQHUDQGHUHQQLFKW 'LH%LEOLRWKHNNDQQGDKHUQXUGDVDXIQHKPHQZDVDXIMHGHQ)DOOYRQMHGHUJUDILVFKHQ2EHUIOlFKHXQWHUVWW]W ZLUG 'DV LVW OHLGHU QLFKW YLHO -DYD GHILQLHUW GD]X GDV$EVWUDFW:LQGRZ7RRONLW $:7 GDV NRQNUHWH 3ODWW IRUPHQZLH0LFURVRIW:LQGRZV$SSOHV0DF26RGHU8QL[PLW0RWLILPSOHPHQWLHUHQ6RZLUGMHGH.RPSRQHQ WH LQ -DYD DXI HLQH .RPSRQHQWH GHU 3ODWWIRUP DEJHELOGHW 'DKHU VHKHQ SRUWLHUWH $QZHQGXQJHQ DXI MHGHP 5HFKQHUVRDXVZLHGHU5HVWGHU3URJUDPPH'DGDV$:7MHGRFKVRHLQIDFKJHKDOWHQLVWGDVVHLQHSURIHV VLRQHOOH 2EHUIOlFKH QXU PLW 0KH ]X HUVWHOOHQ LVW VLQG IU GLH $ENU]XQJ $:7 QRFK HLQ SDDU KlPLVFKH 'HXWXQJHQLP8PODXI$ZIXO:LQGRZ7RRONLW$ZNZDUG:LQGRZ7RRONLWRGHU$QQR\LQJ:LQGRZ7RRONLW

Java Foundation Classes

1DFK GHU )UHLJDEH GHV HUVWHQ $:7V ZXUGH NODU GDVV GDV /HLVWXQJVDQJHERW NHLQHVZHJV IU GLH =XNXQIW UHLFKW'LH(QWZLFNOHUKDEHQVLFKGHPJHZLGPHWXQGLQWHUHVVDQWH(UZHLWHUXQJHQJHVFKDIIHQGLHXQWHUGHP 1DPHQ-DYD)RXQGDWLRQ&ODVVHV-)&LQ-DYDHLQJHIKUWZXUGHQ'LH.ODVVHQEHVWHKHQLP:HVHQWOLFKHQDXV ; 6ZLQJ*8,.RPSRQHQWHQ

8QWHU GLH 6ZLQJ6HW.RPSRQHQWHQ IDOOHQ JDQ] QHXH JUDILVFKH (OHPHQWH 'LHVH VLQG DQGHUV DOV GLH SODWWIRUPDEKlQJLJHQ3HHU.RPSRQHQWHQGHVKHUN|PPOLFKHQ$:7VYROOVWlQGLJLQ-DYDLPSOHPHQWLHUW

$OOHUGLQJV EDVLHUHQ HLQLJH 6ZLQJ.RPSRQHQWHQ ZLH HLQJFrame DXI HLQHU VFKZHUJHZLFKWLJHQ $:7 .RPSRQHQWH2KQHGLHVH$EKlQJLJNHLWHQNDQQEHLVSLHOVZHLVHGDV$XVVHKHQHQJOORRNDQGIHHONXU]

/2) RGHU / ) JHlQGHUW ZHUGHQ 'HU 1DPH 6ZLQJ ZDU HLQ 3URMHNWQDPH GLHVHU .RPSRQHQWHQ XQG REZRKO6ZLQJQXUHLQ7HLOGHU-)&LVWEOHLEWGHU1DPHIUGLH2EHUIOlFKHQHOHPHQWHEHVWHKHQ

; 3OXJJDEOH/RRN )HHO

'LHVJLEWXQVGLH0|JOLFKNHLWGDV$XVVHKHQGHU.RPSRQHQWHQ]XU/DXI]HLWDOVRRKQHGDV3URJUDPP QHX]XVWDUWHQ]XlQGHUQ$OOH.RPSRQHQWHQGHV6ZLQJ6HWVEHVLW]HQGLHVH)lKLJNHLWDXWRPDWLVFK

; $FFHVVLELOLW\hEHUVWW]XQJIU0HQVFKHQPLW%HKLQGHUXQJHQ

0LWGLHVHU$3,NDQQPLWQHXHQ,QWHUDNWLRQVWHFKQLNHQDXIGLH-)&XQG$:7.RPSRQHQWHQ]XJHJULIIHQ ZHUGHQ=XGLHVHQ7HFKQLNHQ]lKOHQXQWHUDQGHUHP/HVHJHUlWHIU%OLQGHHLQH/XSHIUGHQ%LOGVFKLUP XQGDXFK6SUDFKHUNHQQXQJ

; -DYD'$3,

'LH ')XQNWLRQVELEOLRWKHN LVW HLQH QHXH 7HFKQLN GLH EHU HLQH 2EMHNWEHVFKUHLEXQJ lKQOLFK ZLH 3RVWVFULSW2EMHNWHELOGHWXQGGLHVHDXIGHP%LOGVFKLUPGDUVWHOOW=XGHQ)lKLJNHLWHQGHU%LEOLRWKHNJH K|UW HV NRPSOH[H 2EMHNWH GXUFK 3IDGH ELOGHQ ]X N|QQHQ XQG GDUDXI %HZHJXQJV XQG 9HUVFKLHEH RSHUDWLRQHQDQ]XZHQGHQ

; 'UDJ 'URS

'DWHQ N|QQHQ PLWWHOV 'UDJ 'URS OHLFKW YRQ HLQHU $SSOLNDWLRQ ]XU DQGHUHQ EHUWUDJHQ ZHUGHQ 'DEHL SURILWLHUHQ-DYD3URJUDPPHDXFKGDYRQ'DWHQ]XQXW]HQGLHQLFKWDXV-DYD3URJUDPPHQVWDPPHQ

Schulversion

(6)

1.3 Das Toolkit

'LHDEVWUDNWH.ODVVHToolkitGHILQLHUWV\VWHPXQGELOGVFKLUPDEKlQJLJH,PSOHPHQWLHUXQJHQ(VJLEWIUMHGH 3ODWWIRUP HLQH ,PSOHPHQWLHUXQJ GHU DEVWUDNWHQ .ODVVVH XQWHU :LQGRZV ]XP %HLVSLHO GLH LQWHUQH .ODVVH WToolkit 'DVNRQNUHWH7RRONLW2EMHNWOLHIHUWGLH)DEULNIXQNWLRQgetDefaultToolkit()'LHLPSOHPHQWLHU WHQ 0HWKRGHQ OLHIHUQ GHP $:7 ]XP %HLVSLHO GLH 3HHU2EMHNWH GRFK IU XQV (QGDQZHQGHU LVW GDV ZHQLJ LQWHUHVVDQW6SDQQHQGHUVLQGHWZDGLH$XVPD‰HGHV%LOGVFKLUPV

Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

System.out.println( d ); // java.awt.Dimension[width=1024,height=768]

'DV 7RRONLW NDQQ DXFK HLQHQ 6\VWHPKLQZHLV DOV %HHS VHQGHQ GDPLW GHU $QZHQGHU GLH 0HOGXQJ ]XVlW]OLFK DNXVWLVFKZDKUQLPPW=XQlFKVWLVWGHQNEDUGHQ$6&,,&RGHDXV]XJHEHQ'DGLH.RQVROHDOOHUGLQJVQLFKW DOOH$6&,,=HLFKHQYHUDUEHLWHQPXVVXQGVRPLWDXIGLHNHLQH$QWZRUW]XJHEHQKDWLVWGLHVH/|VXQJQLFKW LQ DOOHQ )lOOHQ YRQ (UIROJ JHNU|QW =XGHP PLVFKW VLFK KLHU GLH .RQVROHQDXVJDEH PLW 2SHUDWLRQHQ DXI GHQ

%HQXW]HUVFKQLWWVWHOOHQEHLGHVROOWHQHQWNRSSHOWZHUGHQ:DVJHVFKLHKW]XP%HLVSLHOZHQQGLH$XVJDEHDXI HLQDQGHUHV'LVSOD\XPJHOHLWHWZLUG"(LQH0HWKRGHGHV7RRONLWVKLOIWKLHUbeep()

import java.awt.*;

public class ToolkitBeep {

public static void main( String args[] ) {

Toolkit.getDefaultToolkit().beep();

System.exit( 0 );

} }

ToolkitBeep.java

abstract class java.awt.Toolkit ; static Toolkit getDefaultToolkit()

/LHIHUWGDVDNWXHOOH7RRONLW]XUFN

; abstract Dimension getScreenSize()

/LHIHUWHLQ'LPHQVLRQ2EMHNWPLWGHU*U|‰HGHV%LOGVFKLUPV

; abstract void beep()

*LEWHLQ%HHSDXV

(LQH JDQ] DQGHUH 0|JOLFKNHLW LVW HV 6RXQGGDWHLHQ DE]XVSLHOHQ 6R ODVVHQ VLFK GLH YHUVFKLHGHQVWHQ %HHSV ]XVDPPHQVWHOOHQ:LUZHUGHQGDVLP.DSLWHOQlKHUXQWHUVXFKHQ

1.4 Fenster unter grafischen Oberflächen

'HU $QIDQJ DOOHU 3URJUDPPH XQWHU HLQHU JUDILVFKHQ %HQXW]HUREHUIOlFKH LVW GDV )HQVWHU HQJOIUDPH :LU PVVHQXQVGDKHUHUVWPLWGHQ)HQVWHUQEHVFKlIWLJHQEHYRUZLUDXIGHQ,QKDOWQlKHUHLQJHKHQN|QQHQ'DV )HQVWHUGLHQWDXFKDOV*UXQGODJHYRQ'LDORJHQVSH]LHOOHQ)HQVWHUQGLHHQWZHGHUPRGDORGHUQLFKWPRGDODU EHLWHQN|QQHQ:REHLHLQPRGDOHU'LDORJHUVWEHGLHQWZHUGHQP|FKWHELVHVPLWGHP*HVDPWV\VWHPZHLWHU JHKHQNDQQ

8PLQHLQ)HQVWHUHWZDV]X]HLFKQHQPXVVYRUKHUJUXQGVlW]OLFKGLH(QWVFKHLGXQJIU6ZLQJRGHU$:7JHIlOOW ZHUGHQGHQQDEKlQJLJYRQGHU:DKOLVWGDV9HUIDKUHQ]XP=HLFKHQHWZDVDQGHUV

AWT-Fenster darstellen

8PXQWHUGHP$:7HLQ)HQVWHU]X|IIQHQPVVHQZLU]XQlFKVWGDVawt3DNHWHLQELQGHQ'DQQN|QQHQZLU HLQH.ODVVHFrameXQGGHUHQ0HWKRGHQQXW]HQ'DV/LVWLQJLVWVHKUNXU]

(7)

import java.awt.Frame;

public class HelloAwtFrame {

public static void main( String args[] ) {

Frame f = new Frame( "Das Fenster zur Welt" );

f.setSize( 300, 200 );

f.setVisible( true );

} }

HelloAwtFrame.java

1HEHQGHP6WDQGDUG.RQVWUXNWRUH[LVWLHUWHLQZHLWHUHUEHLGHPZLUGHQ1DPHQLQGHU7LWHOOHLVWHEHVWLPPHQ N|QQHQZLHLP%HLVSLHOJHVFKHKHQ'DV)HQVWHUNDQQQLFKWPLW;LQGHU7LWHOOHLVWHJHVFKORVVHQZHUGHQGD QRFKNHLQH(UHLJQLVEHKDQGOXQJLPSOHPHQWLHUWLVW

class java.awt.Frame

extends Window

implements MenuContainer ; Frame()

(U]HXJWHLQQHXHVFrame2EMHNWZHOFKHVDP$QIDQJXQVLFKWEDULVW

; Frame( String title )

(U]HXJWHLQQHXHVFrame2EMHNWPLWHLQHP)HQVWHU7LWHOZHOFKHVDP$QIDQJXQVLFKWEDULVW

Swing-Fenster darstellen

(LQ)HQVWHUXQWHU6ZLQJXQWHUVFKHLGHWVLFKYRP$QVDW]QLFKWYRP$:73HGDQWGLH.ODVVHKHL‰WJFrameVWDWW Frame

import javax.swing.JFrame;

public class HelloSwingFrame {

public static void main( String args[] ) {

JFrame f = new JFrame( "Das Fenster zur Welt" );

f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

f.setSize( 300, 200 );

f.setVisible( true ); } }

HelloSwingFrame.java

'LHSUDNWLVFKH)XQNWLRQsetDefaultCloseOperation()PLWGHP$UJXPHQWJFrame.EXIT_ON_CLOSEEHHQ GHWGLH$SSOLNDWLRQZHQQGHU%HQXW]HUGDV)HQVWHUVFKOLH‰W'DV$:7ELHWHWHLQHlKQOLFKH)XQNWLRQQLFKWDQ (EHQVRZLHGHUjava.awt.FrameEHVLW]WGHUjavax.swing.JFrameQHEHQGHPSDUDPHWULVLHUWHQ.RQVWUXNWRU HLQHQ6WDQGDUG.RQVWXNWRU

class javax.swing.JFrame

extends Frame

implements WindowConstants, Accessible, RootPaneContainer ; JFrame()

(U]HXJWHLQQHXHVJFrame2EMHNWZHOFKHVDP$QIDQJXQVLFKWEDULVW

; JFrame( String title )

(U]HXJWHLQQHXHVJFrame2EMHNWPLWHLQHP)HQVWHU7LWHOZHOFKHVDP$QIDQJXQVLFKWEDULVW 'HU7LWHOHLQHV$:7XQG6ZLQJ)HQVWHUVOlVVWVLFKVSlWHUPLWsetTitle()ZLHGHUlQGHUQ

Das erste Swing-Fenster

Schulversion

(8)

Sichtbarkeit des Fensters

1DFKGHU.RQVWUXNWLRQLVWGDV)HQVWHUYRUEHUHLWHWDEHUQRFKQLFKWVLFKWEDU(VZLUGHUVWQDFKGHP$XIUXIYRQ setVisible(true)VLFKWEDU'DVLFKGLHFrame.ODVVHGLUHNWYRQWindowDEOHLWHWHLQFrameLVWHLQWindow PLW 7LWHOOHLVWH XQGJFrame YRQFrame EHVLW]WFrame XQG DXFKJFrame NHLQH HLJHQHsetVisible() )XQNWLRQVRQGHUQHUEHQVLHYRQComponentZRYRQLQGLUHNWDXFKWindowZLHGHUDEJHOHLWHWLVW

abstract class java.awt.Component

implements ImageObserver, MenuContainer, Serializable ; void setVisible( boolean b )

; setVisible(true)]HLJWGDV)HQVWHUDQ/LHJWHVLP+LQWHUJUXQGVRZLUGHVZLHGHULQGHQ9RUGHU JUXQGJHKROW)UKHUZXUGHGLH0HWKRGHshow()YHUZHQGHW

:HLWHUH)XQNWLRQHQGLHIUJFrameXQGFrameLQWHUHVVDQWVLQGVWDPPHQYRQGHU2EHUNODVVHWindow class java.awt.Window

extends Container implements Accessible ; boolean isShowing()

trueZHQQVLFKGDV)HQVWHUDXIGHP%LOGVFKLUPEHILQGHW

; void toBack()

'DV )HQVWHU ZLUG DOV KLQWHUVWHV LQ GLH )HQVWHUUHLKHQIROJH HLQJHUHLKW (LQ DQGHUHV )HQVWHU ZLUG VRPLW VLFKWEDU

; void toFront()

3ODW]LHUWGDV)HQVWHUDOVYRUGHUVWHVLQGHU'DUVWHOOXQJDOOHU)HQVWHUDXIGHP6FKLUP

Größe und Position des Fensters verändern

0LWGHUDXVComponentJHHUEWHQ0HWKRGHsetSize()N|QQHQZLUGLH0D‰HGHV)HQVWHUVYHUlQGHUQ abstract class java.awt.Component

implements ImageObserver, MenuContainer, Serializable ; void setSize( int width, int height )

9HUlQGHUWGLH*U|‰HHLQHU.RPSRQHQWHHKHPDOVsize()

; void setSize( Dimension d )

9HUlQGHUWGLH*U|‰HHLQHU.RPSRQHQWHHQWVSULFKWsetSize(d.width, d.height)

Beispiel

'LH3RVLWLRQGHV)HQVWHUVfNDQQPLWsetLocation()JHlQGHUWZHUGHQ:HUGDV)HQVWHU]XP%HLVSLHOLQGHU 0LWWHGHV%LOGVFKLUPVSRVLWLRQLHUHQP|FKWHPXVVQXUYRUKHUGLH*U|‰HGHV%LOGVFKLUPVHUIUDJHQ'LHVIXQNWLR QLHUWPLWgetScreenSize()HLQHU)XQNWLRQGHV7RRONLWV

Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

f.setLocation( (d.width – getSize().width ) / 2, (d.height- getSize().height) / 2 );

abstract class java.awt.Component

implements ImageObserver, MenuContainer, Serializable ; void setLocation( int x, int y )

6HW]WGLH.RPSRQHQWHDQGLH3RVLWLRQxyHKHPDOVmove()

; void setLocation( Point p )

6HW]WGLH.RPSRQHQWHDQGLHJHZQVFKWH3RVLWLRQ

; Point getLocation()

/LHIHUWGLH3RVLWLRQGHU.RPSRQHQWHDOVPoint2EMHNW

(9)

Beispiel

$XFKGDV9HUJU|‰HUQHLQHV)HQVWHUVfVRGDVVHVGLHPD[LPDOH$XVGHKQXQJDQQLPPWLVWPLWHLQHU)XQNWLRQ P|JOLFK %HWUDFKWHQ ZLU GLH IROJHQGHQ =HLOHQ GLH KLQWHU HLQHsetVisible(true)0HWKRGH ]XP %HLVSLHO LP .RQVWUXNWRUJHVHW]WZHUGHQ

f.setLocation( 0, 0 );

f.resize( Toolkit.getDefaultToolkit().getScreenSize() );

6ROOGHU)UDPHQLFKWLQGHU*U|‰HYHUlQGHUEDUVHLQVRVHW]HQZLUHLQIDFKsetResizable(false)

Frame frame = new Frame( "Du kriegst mich nicht klein." );

frame.setResizable( false );

Hauptprogramm von Frame/JFrame ableiten

:LUN|QQHQXQVHUHQHXH.ODVVHDXFKGLUHNWYRQFrameE]ZJFrameDEOHLWHQ'DQQLVWHVXQVJHVWDWWHWGLH )XQNWLRQHQ GHU .ODVVHQ GLUHNW DXI]XUXIHQ ]XP %HLVSLHOsetSize() ,P +DXSWSURJUDPP HU]HXJHQ ZLU EHU GHQ HLJHQHQ .RQVWUXNWRU GDQQ GDV )HQVWHU GHQQ GHU HLJHQH .RQVWUXNWRU UXIW MD EHU GLHsuper())XQNWLRQ DXWRPDWLVFKGHQ.RQVWUXNWRUGHU2EHUNODVVHDOVRYRQFrameE]ZJFrameDXI

import java.awt.Dimension;

import java.awt.Toolkit;

import javax.swing.JFrame;

public class SubWin extends JFrame {

public SubWin( int x, int y ) {

setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

setVisible( true );

setSize( x, y );

Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

setLocation( (d.width – getSize().width ) / 2, (d.height – getSize().height) / 2 );

}

public static void main( String args[] ) {

SubWin win = new SubWin( 200, 100 );

} }

SubWin.java

'DV 3URJUDPP HU]HXJW HLQ ([HPSODU YRQSubWin GDV ZLHGHUXP HLQJFrame LVW :LUG HLQSubWin HU]HXJW ZLUG GHU .RVWUXNWRU DEJHDUEHLWHW GHU GDV )HQVWHU DXI GLH LP .RQVWUXNWRU EHUJHEHQH *U|‰H PLWWLJ DXI GLH

%HQXWHUREHUIOlFKHVHW]W'DV)HQVWHUZLUGDXWRPDWLVFKDQJH]HLJW

Fenster- und Dialog-Dekoration

)U EHVWLPPWH $QZHQGXQJHQ LVW HV JQVWLJ EHL )HQVWHUQ XQG 'LDORJHQ GLH 6WDQGDUGGLDORJHOHPHQWH DXV ]XVFKDOWHQHWZD GDQQZHQQGHU%HQXW]HUGDV)HQVWHUQLFKWYHUNOHLQHUQVROO6HLWGHP6'.KDEHQGLH (QWZLFNOHUGHQ.ODVVHQFrameXQGDialogHLQH0HWKRGHsetUndecorated()PLWJHJHEHQEHUGLHVLFKGLH 7LWHOOHLVWH GDV 6\VWHPPHQ XQG GHU 5DKPHQ DEVFKDOWHQ ODVVHQ 'D 6ZLQJ DXI GHQ $:7.RPSRQHQWHQ EDVLHUWJLOWGDVDXFKIU6ZLQJ)HQVWHUXQG'LDORJH

class java.awt.Frame extends Window implements MenuContainer class java.awt.Dialog extends Window

; void setUndecorated( boolean undecorated ) 6HW]WO|VFKWGLH'HNRUDWLRQ

; boolean isUndecorated() (UIUDJWGLH'HNRUDWLRQ

Schulversion

(10)

2 Zeichnen - die grafische Darstellung

,QGLHVHP.DSLWHOHUIDKUHQ6LH

Æ ZLH6LHPLWKLOIHGHV$:7]HLFKQHQN|QQHQ

Æ ZLH6LH7H[WDXVJHEHQXQGYHUVFKLHGHQH6FKULIWDUWHQHLQVHW]HQ Æ ZLH6LHPLW&OLSSLQJ%HUHLFKHQDUEHLWHQ

9RUDXVVHW]XQJHQ

9 )HQVWHUSURJUDPPLHUXQJ

2.1 Grundlegendes zum Zeichnen

1DFKGHPZLUHLQ)HQVWHU|IIQHQN|QQHQZROOHQZLUHWZDVLQGHQ)HQVWHULQKDOWVFKUHLEHQ'DVLFKKLHUGLH :HJH]ZLVFKHQ$:7XQG6ZLQJWUHQQHQZROOHQZLUGHQ:HJPLW6ZLQJZHLWHUEHVFKUHLWHQ

Die paint()-Methode für das AWT-Frame

$OV HLQOHLWHQGHV %HLVSLHO VROO XQV JHQJHQ HLQHQ 7H[W ]X SODW]LHUHQ 'DIU EHUVFKUHLEHQ ZLU GLH )XQNWLRQ paint()GHU.ODVVHFrameXQGVHW]HQGRUWDOOHVUHLQZDVJH]HLFKQHWZHUGHQVROOHWZD/LQLHQ7H[WHRGHU JHIOOWH3RO\JRQH'HUJHZQVFKWH,QKDOWZLUGLPPHUGDQQJH]HLFKQHWZHQQGDV)HQVWHUQHXDXIJHEDXWZLUG RGHU ZLU YRQ DX‰HQrepaint()DXIUXIHQ GHQQ JHQDX LQ GHP )DOO ZLUG GDV *UDILNV\VWHPpaint() DXIUXIHQ XQGGDV=HLFKQHQDQVWR‰HQ

import java.awt.*;

import java.awt.event.*;

public class Biene extends Frame {

public Biene() {

setSize( 500, 100 );

addWindowListener( new WindowAdapter() { public void windowClosing ( WindowEvent e) { System.exit(0); }

});

}

public void paint( Graphics g ) {

g.drawString( "\"Maja, wo bist du?\" (Mittermeier)", 100, 60 );

}

public static void main( String args[] ) {

new Biene().setVisible( true );

} }

Biene.java

Ein Fenster mit gezeichnetem Inhalt

(11)

Der Grafikkontext Graphics

(LQ VSH]LHOOHU :HUW ZLUG LQ GHUpaint()0HWKRGH EHUJHEHQ GHU *UDILNNRQWH[W HLQ 2EMHNW YRP 7\S GraphicsGraphic EHVLW]W YHUVFKLHGHQH 0HWKRGHQ ]XP =HLFKQHQ HWZD YRQ /LQLHQ .UHLVHQ 2YDOHQ 5HFKWHFNHQ=HLFKHQIROJHQRGHU%LOGHUQ'DVJUDILVFKH6\VWHPEHUJLEWXQVHUHP3URJUDPPEHUpaint()HLQ JOWLJHVGraphics2EMHNW XQG ZLU N|QQHQ DXI GLHVH :HLVH DXI GHU JUDILVFKHQ 2EHUIOlFKH ]HLFKQHQ 'LHV IXQNWLRQLHUW DXFK GDQQ ZHQQ GLH =HLFKHQIOlFKH QLFKW GLUHNW VLFKWEDU LVW ZLH EHL +LQWHUJUXQGJUDILNHQ 'DV Graphics2EMHNWIKUW%XFKEHUPHKUHUH'LQJH

; 'LH.RPSRQHQWHDXIGHU]X]HLFKQHQLVWKLHUHUVWHLQPDOGDVURKH)HQVWHU

; .RRUGLQDWHQ GHV %LOGEHUHLFKV XQG GHV &OLSSLQJ%HUHLFKV 'LH =HLFKHQRSHUDWLRQHQ DX‰HUKDOE GHV

&OLSSLQJ%HUHLFKV ZHUGHQ QLFKW DQJH]HLJW 'DKHU ZLUG HLQ &OLSSLQJ%HUHLFK DXFK %HVFKQLWW%HUHLFK JHQDQQW

; 'HUDNWXHOOH=HLFKHQVDW]java.awt.FontXQGGLHDNWXHOOH)DUEHjava.awt.Color

; 'LH3L[HORSHUDWLRQ;25RGHU3DLQW

; 'LH)XQNWLRQPLWGHUGLH)DUEHYHUNQSIWZLUG

; 7UDQVODWLRQDOVRHLQH9HUVFKLHEXQJYRP1XOOSXQNW

:LU N|QQHQ QXU LQ GHUpaint()0HWKRGH DXI GDVGraphics 2EMHNW ]XJUHLIHQ 'LHVH ZLHGHUXP ZLUG LPPHU GDQQDXIJHUXIHQZHQQGLH.RPSRQHQWHQHXJH]HLFKQHWZHUGHQPXVV'LHVQXW]HQZLUGDIUXPHLQHQ7H[W ]XVFKUHLEHQ

/HLFKW LVW ]X HQWQHKPHQ GDVVdrawString(String text, int x, int y) HLQHQ 7H[W LQ GHQ =HLFKHQ EHUHLFKGHV*UDILNNRQWH[WVVFKUHLEW,P)ROJHQGHQZHUGHQZLUQRFKZHLWHUH)XQNWLRQHQNHQQHQOHUQHQ +LQZHLV(WZDVXQJHZ|KQOLFKLVWGDVVGHU1XOOSXQNWQLFKWREHQOLQNVLQGHQVLFKWEDUHQ%HUHLFKIlOOWVRQGHUQ GDVV GLH 7LWHOOHLVWH GHQ 1XOOSXQNW EHUGHFNW 8P DQ GLH +|KH GHU 7LWHOOHLVWH ]X NRPPHQ XQG GLH =HLFKHQ RSHUDWLRQHQVR]XYHUVFKLHEHQGDVVVLHLQGHQVLFKWEDUHQ%HUHLFKIDOOHQZLUGHLQjava.awt.Insets2EMHNW EHQ|WLJW,VWfHLQFrame2EMHNWOLHIHUWf.getInserts().topGLH+|KHGHU7LWHOOHLVWH

Zeichen von Inhalten mit JFrame

*UXQGVlW]OLFKOLH‰HVLFKDXFKYRQJFrameHLQHQ8QWHUNODVVHELOGHQXQGpaint()EHUVFKUHLEHQDEHUGDVLVW QLFKWGHUEOLFKH:HJ6WDWWGHVVHQZlKOHQZLUHLQHQDQGHUHQ$QVDW]GHUVRJDUDXFKXQWHU$:7HLQHJXWH /|VXQJLVW:LUELOGHQHLQH HLJHQH.RPSRQHQWHHLQH8QWHUNODVVHYRQJPanelXQWHU$:7PanelZDVZLU DEHUQLFKWPHKUZHLWHUYHUIROJHQZROOHQXQGVHW]WHQGLHVHDXIGDV)HQVWHU:HQQQXQGDV)HQVWHUQHXJH ]HLFKQHW ZLUG ZLUG DXFK GLH .RPSRQHQWHJPanel QHX JH]HLFKQHW XQG UXIW GLHpaint())XQNWLRQ DXI

$OOHUGLQJVEHUVFKUHLEHQ8QWHUNODVVHQYRQ6ZLQJLP5HJHOIDOOpaint()QLFKWVRQGHUQHLQHDQGHUH)XQNWLRQ paintComponent()'DVOLHJWGDUDQGDVV6ZLQJLQpaint()]XP%HLVSLHOQRFK5DKPHQ]HLFKQHWXQGVLFK XP HLQH 3XIIHUXQJ GHV %LOGVFKLUPLQKDOWHV ]XU 2SWLPLHUXQJ NPPHUW 6R UXIWpaint() GLH GUHL )XQNWLRQHQ paintComponent()paintBorder() XQGpaintChildren() DXI XQG EHL :LHGHUGDUVWHOOXQJ NPPHUW VLFK HLQRepaintManagerXPHLQH]JLJH'DUVWHOOXQJPLW+LOIHGHUJHSXIIHUWHQ,QKDOWHZDVEHLQRUPDOHQ6ZLQJ ,QWHUDNWLRQVNRPSRQHQWHQZLH6FKDOWIOlFKHQZLFKWLJLVW

'DPLW LVW GLH 'DUVWHOOXQJ YRQ ,QKDOWHQ LQ HLQHPJFrame HLQIDFK :LU LPSRUWLHUHQ GUHL .ODVVHQJPanel XQG JFrameDXVjavax.swingXQGGraphicsDXVjava.awt'DQQELOGHQZLUHLQH8QWHUNODVVHYRQJPanelXQG

EHUVFKUHLEHQpaintComponent() Notizen

Schulversion

(12)

import java.awt.Graphics;

import javax.swing.*;

class DrawFirstLine extends JPanel {

protected void paintComponent( Graphics g ) {

super.paintComponent( g );

g.drawLine( 10, 10, 100, 50 );

}

DrawFirstLine.java

paintComponent()EHVLW]WLVWLQGHU2EHUNODVVHGLH6LFKWEDUNHLWprotectedZDVZLUEHLEHKDOWHQVROOWHQ'LH )XQNWLRQZLUGQLFKWYRQDX‰HQDXIJHUXIHQXQGGDKHUPXVVHLQH8QWHUNODVVHGLH6LFKWEDUNHLWQLFKW]Xpublic HUZHLWHUQ'HU$XIUXIYRQsuper.paintComponent()LVWLPPHUGDQQDQJHEUDFKWZHQQGLH2EHUNODVVHLKUH ,QKDOWH]HLFKQHQVROO%HLYROOVWlQGLJHLJHQHP,QKDOWLVWGDVQLFKWQ|WLJ

'HUOHW]WH6FKULWWLVWHLQ7HVWSURJUDPPZHOFKHVHLQ([HPSODUGHVVSH]LDOLVLHUWHQJPanelVELOGHWXQGDXIGHQ JFrameVHW]W

public static void main( String args[] ) {

JFrame f = new JFrame();

f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

f.setSize ( 100, 100 );

f.add( new DrawFirstLine() );

f.setVisible( true );

} }

'DV +LQ]XIJHQ YRQ .RPSRQHQWHQ DXI GDVJFrame XQWHUVWW]W HUVW -DYD PLWadd() 9RUKHU KLH‰ HV f.getContentPane().add()'LH/|VXQJPLWGHPJPanelPXVVDXFKQLFKWGLH+|KHGHU7LWHOOHLVWHEHUFN VLFKWLJHQGLH.RPSRQHQWHJPanelGLHDXIGDV)HQVWHUJHVHW]WZLUGLVWNRUUHNWXQWHUGHU7LWHOOHLVWHXQGQLFKW XQWHULKU

Auffordern zum Neuzeichnen mit repaint()

'LH0HWKRGHrepaint()NDQQYRQDX‰HQDXIJHUXIHQZHUGHQXPHLQ1HX]HLFKQHQ]XHU]ZLQJHQ:HQQGLH .RPSRQHQWH HLQH 6ZLQJ.RPSRQHQWH LVW VR ZLH XQVHUH 8QWHUNODVVH YRQJPanel GDQQ ZLUG GLHpaint() 0HWKRGHGHU.RPSRQHQWHDXIJHUXIHQ,P)DOOHLQHU$:7.RPSRQHQWHZLH)UDPHZLUGupdate()DXIJHUX IHQZDVMDDXWRPDWLVFKpaint()DXIUXIW

abstract class java.awt.Component

implements ImageObserver, MenuContainer, Serializable

; void repaint()

(UEHWHWVRIRUWLJHV1HX]HLFKQHQ

; void repaint( long tm )

(UEHWHW1HX]HLFKQHQLQmillis0LOOLVHNXQGHQ

; void repaint( int x, int y, int width, int height ) (UEHWHW1HX]HLFKQHQGHU.RPSRQHQWHLPDQJHJHEHQHQ%HUHLFK

; void repaint( long tm, int x, int y, int width, int height )

(UEHWHW1HX]HLFKQHQGHU.RPSRQHQWHQDFKtm0LOOLVHNXQGHQLPDQJHJHEHQHQ%HUHLFK

(13)

Fensterinhalte ändern und die ereignisorientierte Programmierung

'HU (LQVWLHJ LQ GLH :HOW GHU *UDILNSURJUDPPLHUXQJ PDJ HWZDV VHOWVDP HUVFKHLQHQ GD LQ GHU SUR]HGXUDOHQ QLFKWHUHLJQLVJHVWHXHUWHQ:HOWZLHGHU&GLH3URJUDPPLHUXQJDQGHUVYHUOLHI(VJDEHLQSDDU)XQNWLRQHQ XQGPLWGHQHQOLH‰VLFKGLUHNWVLFKWEDUDXIGHP%LOGVFKLUPRSHULHUHQ(LQ%HLVSLHODXVGHU&=HLW

10 COLOR 0,1 :REM SELECT BACKGROUND COLOR 20 COLOR 1,3 :REM SELECT FOREGROUND COLOR 30 COLOR 4,1 :REM SELECT BORDER COLOR 40 GRAPHIC 1,1 :REM SELECT BIT MAP MODE 60 CIRCLE 1,160,100,40,40 :REM DRAW A CIRCLE

70 COLOR 1,6 :REM CHANGE FOREGROUND COLOR 80 BOX 1,20,60,100,140,0,1 :REM DRAW A BLOCK

90 COLOR 1,9 :REM CHANGE FOREGROUND COLOR 100 BOX 1,220,62,300,140,0,0 :REM DRAW A BOX

110 COLOR 1,9 :REM CHANGE FOREGROUND COLOR 120 DRAW 1,20,180 TO 300,180 :REM DRAW A LINE

130 DRAW 1,250,0 TO 30,0 TO 40,40 TO 250,0:REM DRAW A TRIANGLE 140 COLOR 1,15 :REM CHANGE FOREGROUND COLOR 150 DRAW 1,160,160 :REM DRAW A POINT

160 PAINT 1,150,97 :REM PAINT IN CIRCLE

170 COLOR 1,5 :REM CHANGE FOREGROUND COLOR 180 PAINT 1,50,25 :REM PAINT IN TRIANGLE 190 COLOR 1,7 :REM CHANGE FOREGROUND COLOR 200 PAINT 1,225,125 :REM PAINT IN EMPTY BOX 210 COLOR 1,11 :REM CHANGE FOREGROUND COLOR 220 CHAR 1,11,24,"GRAPHIC EXAMPLE" :REM DISPLAY TEXT

230 FOR I=1 TO 5000:NEXT:GRAPHIC 0,1:COLOR 1,2

'LHVH+HUDQJHKHQVZHLVHIXQNWLRQLHUWLQ-DYDXQGDXFKYLHOHQPRGHUQHQ6\VWHPHQQLFKWPHKU6LHKDWPLW 2EMHNWRULHQWLHUXQJDXFKQLFKWYLHO]XWXQ

,Q-DYDIKUWHLQ(UHLJQLV]XP$XIUXIGHUpaint())XQNWLRQ'LHVHV(UHLJQLVUHSDLQW(UHLJQLVNDQQDXVJHO|VW ZHUGHQ ZHQQ GHU %LOGVFKLUP ]XP HUVWHQ 0DO JH]HLFKQHW ZLUG DEHU DXFK ZHQQ 7HLOH GHV %LOGVFKLUPV YHU GHFNWZHUGHQ)DOOVGDVUHSDLQW(UHLJQLVNRPPWVSULQJWGDV-DYD6\VWHPLQGLHpaint()0HWKRGHLQGHUGHU

%LOGVFKLUPDXIJHEDXWZHUGHQNDQQ1XUGRUWILQGHQGLH=HLFKHQRSHUDWLRQHQVWDWW:HQQZLUQXQVHOEVWHWZDV ]HLFKQHQZROOHQGDQQNDQQGDVQXULQGHUpaint())XQNWLRQJHVFKHKHQEH]LHKXQJVZHLVHLQ0HWKRGHQGLH YRQpaint()DXIJHUXIHQZHUGHQ$EHUZHQQZLUVHOEVWHWZDV]HLFKQHQZROOHQZLHOlVVWVLFKpaint()GDQQ SDUDPHWULVLHUHQ"

8P PLW GLHVHP 3UREOHP XP]XJHKHQ PVVHQ ZLU GHUpaint())XQNWLRQ ,QIRUPDWLRQ PLWJHEHQ 'LHVH NDQQ paint() QXU DXV GHQ 2EMHNWDWWULEXWHQ EH]LHKHQ 'DKHU LPSOHPHQWLHUHQ ZLU HLQH 8QWHUNODVVH HLQHU .RPSR QHQWHGLHHLQHpaint())XQNWLRQEHVLW]W$QVFKOLH‰HQGN|QQHQZLU2EMHNW]XVWlQGHlQGHUQVRGDVVpaint() QHXH:HUWHEHNRPPWXQGVRPLWJHZQVFKWH,QKDOWH]HLFKQHQNDQQ

(LQ %HLVSLHO VROO GLHV GHXWOLFK PDFKHQ :LU ELOGHQ HLQH 8QWHUNODVVH YRQWindow XQG VHW]HQ GDQQ 2EMHNW ]XVWlQGH 'DPLW ZLU VHOEVW GDV 1HX]HLFKQHQ DQUHJHQ N|QQHQ QXW]HQ ZLU GLH 0HWKRGHrepaint() 6LH HU ]HXJWHLQ1HX]HLFKQHQ(YHQWZHOFKHVYRQGHU(UHLJQLVYHUDUEHLWXQJDEJHDUEHLWHWZLUGXQG]XP1HX]HLFKQHQ GHV%LOGVFKLUPVIKUW

Notizen

Schulversion

(14)

import java.awt.*;

import javax.swing.JOptionPane;

class DrawingWindow extends Window {

String title = "";

DrawingWindow( Frame f ) {

super( f );

setSize( Toolkit.getDefaultToolkit().getScreenSize() );

setVisible( true );

}

public void paint( Graphics g ) {

g.drawString( title, 100, 400 );

} }

public class PaintIndirect {

public static void main( String args[] ) throws Exception {

DrawingWindow w = new DrawingWindow( new Frame() );

w.title = "Bei den US-Militäraktionen in Afghanistan sind über 800 " + "Zivilisten durch militärischen Fehlgriffe umgekommen.";

w.repaint();

JOptionPane.showMessageDialog( w, "Die Quelle?" );

w.title = "New York Times und die nichtstaatliche Organisation Global Exchange.";

w.repaint();

w.title = JOptionPane.showInputDialog( w, "Antwort" );

w.repaint();

JOptionPane.showMessageDialog( w, "Nun ist aber Schluss!" );

System.exit( 0 );

} }

PaintIndirect.java

%OHLEW DOV /HW]WHV GLH )UDJH ZLH VLFK VR HWZDV ZLH &)HDOLQJ QDFKELOGHQ OlVVW 'LH ]X ]HLFKQHQGHQ (OHPHQWHZLH/LQH.UHLVN|QQHQ2EMHNWHVHLQGLHLQHLQH'DWHQVWUXNWXUHLQJHUHLKWZHUGHQ1HKPHQZLUDQ HVH[LVWLHUWIUMHGH]X]HLFKQHQGH3ULPLWLYHHLQH.ODVVH'DQQNDQQHLQHDOOJHPHLQH=HLFKHQNODVVH0HWKRGHQ ZLHline() DQELHWHQ GLH GDQQ HLQ =HLFKHQREMHNW HUVWHOOWHQ XQG LQ GLH 'DWHQVWUXNWXU HLQUHLKHQ ,Q GHU paint())XQNWLRQ ZLUG HLQIDFK GLH 'DWHQVWUXNWXU DEJHODXIHQ 2KQH KLHU HLQH YROOVWlQGLJH ,PSOHPHQWLHUXQJ DQ]XELHWHQN|QQWHHLQ.ODVVHIROJHQGHQ$XIEDXKDEHQ

import java.awt.Graphics;

import java.util.*;

public class PrimitivZeichner {

private Collection<Primitiv> elements = new ArrayList<Primitiv>();

private interface Primitiv {

void paint( Graphics g );

}

private class Line implements Primitiv {

private int x1, y1, x2, y2;

(15)

public Line( int x1, int y1, int x2, int y2 ) {

this.x1 = x1; this.y1 = y1;

this.x2 = x2; this.y2 = y2;

}

public void paint( Graphics g ) {

g.drawLine( x1, y1, x2, y2 );

} }

public void line( int x1, int y1, int x2, int y2 ) {

elements.add( new Line(x1, y1, x2, y2) );

}

public void paint( Graphics g ) {

for ( Iterator iter = elements.iterator(); iter.hasNext(); ) ((Primitiv)iter.next()).paint( g );

} }

PrimitivZeichner.java

9RQDX‰HQOlVVWVLFKHLQ([HPSODUYRQPrimitivZeichnerHUVWHOOHQXQGQXW]HQ

PrimitivZeichner z = new PrimitivZeichner();

z.line( 12, 34, 23, 344 );

z.line( 18, 454, 423, 4 );

'LHline()$XIUXIH]HLFKQHQ]ZDUQRFKQLFKWEHUHLWHQGDV=HLFKQHQDOOHUGLQJVYRUGDGLH2SHUDWLRQHQLQGLH /LVWH ]X ]HLFKQHQGHU 2EMHNWH HLQJHUHLKW ZHUGHQ 'HUpaint())XQNWLRQ HLQHU .RPSRQHQWH PXVV QXQ GLH 5HIHUHQ] DXI GHQPrimitivZeichner ]XJlQJOLFK JHPDFKW ZHUGHQ XQG GDQQ NDQQ VLH paint() YRP PrimitivZeichnerDXIUXIHQ'DVPrimitivZeichner2EMHNWQXW]WGDQQHLQHQJHJHEHQHQ*UDSKLFV.RQWH[W (LQHQ6FKULWWZHLWHUJHGDFKWLVWPrimitivZeichnerVHOEVWHLQH.RPSRQHQWHZLHHWZDWindow'DQQPXVV DQpaint()QLFKWVPHKUJHlQGHUWZHUGHQGHQQVLHZLUGMHW]WYRP)HQVWHUEHKDQGOHUDQJHUXIHQ

Notizen

Schulversion

(16)

2.2 Einfache Zeichenfunktionen

'LHJUDILVFKHQ2EMHNWHZHUGHQLQHLQHP.RRUGLQDWHQV\VWHPSODW]LHUWZHOFKHVVHLQH8UVSUXQJVNRRUGLQDWHQ DOVRVWDQGDUGPl‰LJOLQNVREHQGHILQLHUW'LH$QJDEHLVWDEVROXW]XP)HQVWHUUDKPHQ:lKOHQZLUGLH .RRUGLQDWHDXIGHU\$FKVHNOHLQVRNDQQHVYRUNRPPHQGDVVZLUQLFKWVPHKUVHKHQGHQQGDV2EMHNWZDQ GHUWLQGLH%LOGVFKLUPOHLVWH0LWGHU'$3,NDQQGLHVHU8UVSUXQJYHUVFKREHQZHUGHQ

*HOHJHQWOLFK YHUPLVFKW VLFK GLH 8PJDQJVVSUDFKH PLW GHU 6SUDFKH GHU 0DWKHPDWLN XQG &RPSXWHUJUDILN VR GDVVZLUQRFKHLQPDOGLHZLFKWLJVWHQ%HJULIIHDXI]lKOHQ

Punkte

(LQ3XQNWLVWLQ$EKlQJLJNHLWGHU'LPHQVLRQHQGXUFK]ZHLRGHUPHKUHUH.RRUGLQDWHQJHNHQQ]HLFKQHW'DHU VRNHQQHQZLULKQDXVGHU0DWKHPDWLNNHLQH$XVGHKQXQJKDWGUIHQZLULKQHLJHQWOLFKJDUQLFKWVHKHQ,Q -DYDJLEWHVNHLQH)XQNWLRQPLWGHU3XQNWHJH]HLFKQHWZHUGHQN|QQHQ'LHVHN|QQHQQXUGXUFKHLQHQ/LQLHQ EHIHKOHU]HXJWZHUGHQ

Pixel

'DV:RUW3L[HOLVWHLQH$ENU]XQJIU3LFWXUH(OHPHQW(LQ3L[HOEHVFKUHLEWHLQHQSK\VLNDOLVFKHQ3XQNWDXI GHP%LOGVFKLUPXQGLVWGDKHUQLFKW]XYHUZHFKVHOQPLWHLQHP3XQNWREZRKOXPJDQJVVSUDFKOLFKNHLQHIHVWH 7UHQQXQJ H[LVWLHUW 3L[HO EHVLW]HQ ZLH 3XQNWH .RRUGLQDWHQ :LUG HLQ JUDILVFKHV 2EMHNW JH]HLFKQHW VR ZHUGHQ GLH HQWVSUHFKHQGHQ 3XQNWH DXI GHP %LOGVFKLUP JHVHW]W 'LH $Q]DKO GHU 3L[HO DXI GHP 0RQLWRU LVW EHVFKUlQNWXQWHUHLQHU$XIO|VXQJYRQ3XQNWHQVLQGGLHVDOVR3L[HOGLH HLQ]HOQ]X VHW]HQVLQG(LQHQ3L[HO]XVHW]HQKHL‰WDEHUQLFKWVDQGHUHVDOVLKPHLQHDQGHUH)DUEH]XJHEHQ

Linien

$XFKEHL/LQLHQ PVVHQZLUXQVYRQGHU9RUVWHOOXQJWUHQQHQGLHXQVGLHDQDO\WLVFKH*HRPHWULHYHUPLWWHOW 'HQQGRUWLVWHLQH/LQLHDOVNU]HVWH9HUELQGXQJ]ZLVFKHQ]ZHL3XQNWHQGHILQLHUWVRVDJWHV(XNOLG'DVLH HLQGLPHQVLRQDOVLQGEHVLW]HQVLHHLQH/lQJHDXVXQHQGOLFKYLHOHQ3XQNWHQDEHUNHLQH%UHLWH$XIGHP%LOG VFKLUPEHVWHKWHLQH/LQLHQXUDXVHQGOLFKYLHOHQ3XQNWHQXQGZHQQHLQH/LQLHJH]HLFKQHWZLUGGDQQZHUGHQ 3L[HOJHVHW]WGLHQDKHDQGHUZLUNOLFKHQ/LQLHVLQG'LH3XQNWHPVVHQSDVVHQGLQHLQ5DVWHUJHVHW]WZHUGHQ XQG VR SDVVLHUW HV GDVV GLH /LQLH LQ 6WFNH ]HUEURFKHQ ZLUG 'LHVHV 3UREOHP JLEW HV EHL DOOHQ JUDILVFKHQ 2SHUDWLRQHQGDYRQ)OLH‰NRPPDZHUWHQHLQH$EELOGXQJDXI*DQ]]DKOHQLQXQVHUHP)DOODEVROXWH.RRUGLQD WHQ GHV %LOGVFKLUPV JHPDFKW ZHUGHQ PXVV (LQH EHVVHUH 'DUVWHOOXQJ GHU /LQLHQ XQG .XUYHQ LVW GXUFK

$QWLDOLDVLQJ]XHUUHLFKHQ'LHVLVWHLQH$UW:HLFK]HLFKQXQJPLWQLFKWQXUHLQHU)DUEHVRQGHUQPLW$EVWXIXQ JHQVRGDVVGLH4XDOLWlWDXIGHP%LOGVFKLUPZHVHQWOLFKEHVVHULVW$XFKEHL=HLFKHQVlW]HQLVWGDGXUFKHLQH JXWH9HUEHVVHUXQJGHU/HVEDUNHLWDXIGHP%LOGVFKLUP]XHU]LHOHQ'LH)lKLJNHLW]XP:HLFK]HLFKQHQJLEWHVLQ GHU-)&'$3,VHLW-DYD

abstract class java.awt.Graphics

; abstract void drawLine( int x1, int y1, int x2, int y2 )

=HLFKQHWHLQH/LQLH]ZLVFKHQGHQ.RRUGLQDWHQ[\XQG[\LQGHU9RUGHUJUXQGIDUEH

Beispiel: Setze einen Punkt an die Stelle (x,y) g.drawLine( x, y, x, y );

Rechtecke

,P)ROJHQGHQZROOHQZLUQXUGLHpaint()0HWKRGHPLWHWZDV/HEHQIOOHQ=XQlFKVWZHUIHQZLUHLQHQ%OLFN DXIGLH)XQNWLRQHQGLHXQV5HFKWHFNH]HLFKQHQODVVHQ'LH5FNJDEHZHUWHVLQGLPPHUvoid(VLVWQLFKWVR GDVVGLH)XQNWLRQHQGXUFKHLQHQ:DKUKHLWVZHUWPLWWHLOHQREHLQWDWVlFKOLFKHU=HLFKHQEHUHLFKJHIOOWZHUGHQ NRQQWH/LHJHQGLH.RRUGLQDWHQGHV]X]HLFKQHQGHQ2EMHNWVQLFKWLP6LFKWIHQVWHUVRJHVFKLHKWHLQIDFKJDU QLFKWV'LH=HLFKHQIXQNWLRQLVWQLFKWLQGHU/DJHGLHVLQLUJHQGHLQHU)RUPGHP$XIUXIHUPLW]XWHLOHQ

(17)

abstract class java.awt.Graphics

; void drawRect( int x, int y, int width, int height )

=HLFKQHWHLQ5HFKWHFNLQGHU9RUGHUJUXQGIDUEH'DV5HFKWHFNLVWwidth3L[HOEUHLWXQGheight 3L[HOKRFK

; void abstract fillRect( int x, int y, int width, int height )

=HLFKQHWHLQJHIOOWHV5HFKWHFNLQGHU9RUGHUJUXQGIDUEH'DV5HFKWHFNLVWwidth3L[HOEUHLWXQG height3L[HOKRFK

; void abstract drawRoundRect( int x, y, int width, height, int arcWidth, arcHeight )

=HLFKQHWHLQDEJHUXQGHWHV5HFKWHFNLQGHU9RUGHUJUXQGIDUEH'DV5HFKWHFNLVWwidth3L[HOEUHLW XQGheight 3L[HO KRFKarcWidth JLEW GHQ KRUL]RQWDOHQ XQGarcHeight GHQ YHUWLNDOHQ 'XUFK PHVVHUGHU.UHLVE|JHQGHU5lQGHUDQ

; void abstract fillRoundRect( int x, y, int width, height, int arcWidth, arcHeight ) :LHdrawRoundRect()QXUJHIOOW

; void draw3DRect( int x, int y, int width, int height, boolean raised )

=HLFKQHW HLQ GUHLGLPHQVLRQDO DQJHGHXWHWHV 5HFKWHFN LQ GHU 9RUGHUJUXQGIDUEH 'HU 3DUDPHWHUraised JLEWDQREGDV5HFKWHFNHUK|KWRGHUYHUWLHIWZLUNHQVROO'LH)DUEHQIUGHQ(IIHNWZHUGHQDXVGHQ 9RUGHUJUXQGIDUEHQJHZRQQHQ

; void fill3DRect( int x, int y, int width, int height, boolean raised ) :LHdraw3Drect()QXUJHIOOW

+LQZHLV 'LH %UHLWHQ GHU 5HFKWHFNH EHL GHQ 0HWKRGHQdrawRect() XQGfillRect()XQWHUVFKHLGHQ VLFK drawRect(0, 0, 10, 10)]HLFKQHWHLQ[EUHLWHV5HFKWHFNXQGfillRect(0, 0, 10, 10)]HLFKQHW HLQ[EUHLWHV5HFKWHFN

Ovale und Kreisbögen

'LHGraphics.ODVVHVWHOOWYLHU0HWKRGHQ]XP=HLFKQHQYRQ2YDOHQXQG.UHLVE|JHQEHUHLW*HIOOWHXQGQLFKW JHIOOWH(OOLSVHQVLQGLPPHULQHLQ5HFKWHFNHLQJHSDVVW

abstract class java.awt.Graphics

; abstract drawOval( int x, int y, intwidth, int height )

=HLFKQHWHLQ2YDOLQGHU9RUGHUJUXQGIDUEHZHOFKHVGLH$XVPD‰HHLQHV5HFKWHFNVKDW'DV2YDOKDW HLQH*U|‰HYRQwidth3L[HOLQGHU%UHLWHXQGheight3L[HOLQGHU+|KH

; abstract fillOval( int x, int y, int width, int height ) :LHdrawOval()QXUJHIOOW

; abstract void drawArc( int x, int y, int width, int height, int startAngle, int arcAngle )

=HLFKQHW HLQHQ .UHLVERJHQ 1XOO *UDG OLHJW LQ GHU 8KU3RVLWLRQ %HL HLQHP $XIUXI PLW GHQ :LQNHO DUJXPHQWHQZLUGHLQ.UHLVERJHQJH]HLFKQHWEHLGHP*UDGLPXQWHUHQUHFKWHQ%HUHLFKQLFKW JH]HLFKQHWVLQG

; abstract void fillArc( int x, int y, int width, int height, int startAngle, int arcAngle )

:LHdrawArc()QXUJHIOOW

Eine Kreis- und Ellipsen-Klasse

%HLGHU0HWKRGHdrawOval()PVVHQZLULPPHUGDUDQGHQNHQGDVVGLH(OOLSVHRGHULP6SH]LDOIDOOGHU.UHLV LQHLQ5HFKWHFNPLW6WDUWNRRUGLQDWHQXQGPLW%UHLWHXQG+|KHJH]HLFKQHWZLUG'LHVLVWQLFKWLPPHUGLHQDWU OLFKH 9RUVWHOOXQJ YRQ HLQHU (OOLSVH EH]LHKXQJVZHLVH HLQHV .UHLVHV (LQHQ .UHLV EH]LHKXQJVZHLVH HLQH (OOLSVH XPGHQ0LWWHOSXQNWxyPLWGHQ5DGLHQrxXQGry]HLFKQHW

g.drawOval( x – rx, y – ry, rx + rx, ry + ry );

Schulversion

(18)

Polygone und Polylines

(LQH 3RO\OLQH EHVWHKW DXV HLQHU 0HQJH YRQ /LQLHQ GLH HLQHQ /LQLHQ]XJ EHVFKUHLEHQ 'LHVHU /LQLHQ]XJ PXVV QLFKWJHVFKORVVHQVHLQ,VWHUHVDOOHUGLQJVVRVSUHFKHQZLUYRQHLQHP3RO\JRQ,Q-DYDJLEWHVYHUVFKLHGHQH 0|JOLFKNHLWHQ3RO\JRQHXQG3RO\OLQHV]X]HLFKQHQ=XQlFKVW]XP%HLVSLHOEHUHLQ.RRUGLQDWHQIHOG

abstract class java.awt.Graphics

; abstract void drawPolyline( int xPoints[], int yPoints[], int nPoints )

=HLFKQHWHLQHQ/LQLHQ]XJGXUFKGLHJHJHEHQHQ.RRUGLQDWHQLQGHU9RUGHUJUXQGIDUEH'LH)LJXULVWQLFKW DXWRPDWLVFKJHVFKORVVHQZHQQQLFKWGLH6WDUWXQG(QGNRRUGLQDWHQJOHLFKVLQG0LWnPointNRQWURO OLHUHQZLUGLH$Q]DKOGHUJH]HLFKQHWHQ/LQLHQ

; abstract void drawPolygon( int xPoints[], int yPoints[], int nPoints )

=HLFKQHW ZLHdrawPolyline() HLQHQ /LQLHQ]XJ VFKOLH‰W GLHVHQ DEHU LPPHU JOHLFK LQGHP GLH HUVWH .RRUGLQDWHPLWGHU.RRUGLQDWHnPointsYHUEXQGHQZLUG

; abstract void fillPolygon( int xPoints[], int yPoints[], int nPoints )

)OOWGDV3RO\JRQDXV'DHLQH3RO\OLQHRIIHQLVWNDQQVLHQLFKWJHIOOWZHUGHQ6RPLWJLEWHVGLH)XQN WLRQfillPolyline()QLFKW

Die Polygon-Klasse

1HEHQGHU0|JOLFKNHLWGLH/LQLHQ]JHGXUFK.RRUGLQDWHQIHOGHU]XEHVFKUHLEHQJLEWHVLQ-DYDGLH3RO\JRQ .ODVVHPolygon6LHLVWHLQH(UZHLWHUXQJGHV,QWHUIDFHVShape6LHLVWDEHUPLQLPDOOHGLJOLFKGLH0HWKRGH getBounds() ZLUG LPSOHPHQWLHUW (LQ 3RO\JRQ2EMHNW YHUZDOWHW VHLQH .RRUGLQDWHQ HLJHQVWlQGLJ XQG YRQ DX‰HQN|QQHQZLU(OHPHQWHKLQ]XQHKPHQ0LWGHUPlFKWLJHQ0HWKRGHcontains()N|QQHQZLUKHUDXVILQGHQ REHLQ3XQNWLQGHUYRQGHP3RO\JRQDXVJH]HLFKQHWHQ)OlFKHOLHJW'RFK]XQlFKVWPVVHQZLUHLQ3RO\JRQ 2EMHNWHU]HXJHQ'D]XGLHQHQ]ZHL.RQVWUXNWRUHQ

class java.awt.Polygon

implements Shape, Serializable ; Polygon()

(U]HXJWHLQPolygon2EMHNWRKQH.RRUGLQDWHQ

; Polygon( int xpoints[], int ypoints[], int npoints ) (U]HXJWHLQ3RO\JRQPLWGHQDQJHJHEHQHQ.RRUGLQDWHQ

1XQN|QQHQZLU3XQNWHKLQ]XIJHQXQG$QIUDJHQDQGDV Polygon2EMHNWVWHOOHQ ; Rectangle getBounds()

*LEW GLH %RXQGLQJ%R[ GHU )LJXU ]XUFN 'LHVH EHVFKUHLEW HLQ 5HFKWHFN GDV GDV 2EMHNW JHUDGH XPVFKOLH‰W(LQRectangle2EMHNWEHVLW]WGLH9DULDEOHQheight+|KHGHV5HFKWHFNVwidth%UHLWH GHV 5HFKWHFNVx [.RRUGLQDWH XQGy \.RRUGLQDWH GHV 5HFKWHFNV 0LW YHUVFKLHGHQHQ )XQNWLRQHQ ODVVHQVLFK5HFKWHFNH]XVDPPHQIDVVHQXQGVFKQHLGHQ

; void addPoint( int x, int y )

'LH.RRUGLQDWH[\ZLUGKLQ]XJHIJW'LH*UHQ]HQHQJOERXQGLQJVZHUGHQDXWRPDWLVFKDNWXDOLVLHUW

; boolean contains( int x, int y )

/LHIHUWtrue ZHQQ GHU 3XQNW [\ LP 3RO\JRQ OLHJW (V ZLUG HLQ *HUDGH8QJHUDGH$OJRULWKPXV YHU ZHQGHWXPGLHVKHUDXV]XILQGHQ

; boolean contains( Point p )

/LHIHUWtrueZHQQGHU3XQNWpLP3RO\JRQOLHJW(LQPoint2EMHNWEHVLW]WGLH$WWULEXWHxXQGyIUGLH .RRUGLQDWHQ

(19)

'DVHU]HXJWH3RO\JRQN|QQHQZLUPLWVSH]LHOOHQ0HWKRGHQQDWUOLFKDXVGraphics]HLFKQHQ

abstract class java.awt.Graphics ; void drawPolygon( Polygon p )

=HLFKQHWGDV3RO\JRQLQGHU9RUGHUJUXQGIDUEH

; void fillPolygon( Polygon p )

=HLFKQHWHLQJHIOOWHV3RO\JRQ

+LQZHLV'LH contains())XQNWLRQEHLP3RO\JRQDUEHLWHWNRUUHNWIU3XQNWHLQQHUKDOEGHUHLQJHVFKORVVHQHQ )OlFKH%HL$EIUDJHYRQ 3XQNWHQGLHGHQ(FNSXQNWHQ HQWVSUHFKHQ NRPPHQLPPHUVHKUZLOONUOLFKH:HUWH KHUDXVJHQDXVREHLGHU$QIUDJHREGLH3XQNWHDXIGHU/LQLH]XP,QQHQUDXPJHK|UHQRGHUQLFKW

Notizen

Schulversion

(20)

N-Ecke zeichnen

%LVKHUJLEWHVLPGraphics3DNHWNHLQH)XQNWLRQXPUHJHOPl‰LJHQ(FNH]X]HLFK QHQ6RHLQH)XQNWLRQLVWDEHUOHLFKWXQGVFKQHOOSURJUDPPLHUW:LUWHLOHQGD]XHLQ IDFKHLQHQ.UHLVLQQ7HLOHDXIXQGEHUHFKQHQGLH[XQG\.RRUGLQDWHGHU3XQNWH DXI GHP .UHLV 'LHVH 3XQNWH IJHQ ZLU HLQHP Polygon2EMHNW PLWWHOV GHU addPoint()0HWKRGH KLQ]X (LQH HLJHQH )XQNWLRQdrawNeck() EHUQLPPW GLHVH 3RO\JRQ(UVWHOOXQJ 'HU OHW]WH 3DUDPHWHU GHU )XQNWLRQ LVW HLQ :DKUKHLWVZHUW GHU EHVWLPPWREGDVQ(FNJHIOOWZHUGHQVROORGHUQLFKW1XQNDQQPLW]ZHL|IIHQW OLFKHQ )XQNWLRQHQ HLQ QLFKW JHIOOWHV EH]LHKXQJVZHLVH JHIOOWHV Q(FN JH]HLFKQHW ZHUGHQ

import java.awt.*;

import javax.swing.*;

public class NEckDemo extends JPanel {

protected void paintComponent( Graphics g ) {

PolygonWithEgdes.drawNeck( g, getWidth()/2, getHeight()/2, 50, 6, true );

PolygonWithEgdes.drawNeck( g, getWidth()/2, getHeight()/2, 60, 6, false );

}

public static void main( String args[] ) {

JFrame f = new JFrame();

f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

f.add( new NEckDemo() );

f.setSize( 200, 200 );

f.setVisible( true );

} }

class PolygonWithEgdes {

private static Polygon p = new Polygon();

public static void drawNeck( Graphics g,

int x, int y, int r, int n, boolean filled ) {

p.reset();

for ( int i = 0; i < n; i++ )

p.addPoint( (int) ( x + r*Math.cos( i*2*Math.PI/n ) ), (int) ( y + r*Math.sin( i*2*Math.PI/n ) ) );

if ( filled )

g.fillPolygon( p );

else

g.drawPolygon( p );

} }

NEckDemo.java

(21)

2.3 Zeichenketten schreiben

'LH 0HWKRGH PLW GHU =HLFKHQ LQ YHUVFKLHGHQHQ =HLFKHQVlW]HQ HQJOIRQWV DXI GLH =HLFKHQIOlFKH JHEUDFKW ZHUGHQ KHL‰WdrawString() 'LHVH )XQNWLRQ EHVLW]W GUHL 3DUDPHWHU GLH ]X VFKUHLEHQGH =HLFKHQNHWWH [ .RRUGLQDWHXQG\.RRUGLQDWHdrawString()]HLFKQHWLPDNWXHOOHLQJHVWHOOWHQ=HLFKHQVDW]XQGGLH*UXQGOLQLH HQJOEDVHOLQHEHILQGHWVLFKDXIGHUEHUJHEHQGHQ\3RVLWLRQ

abstract class java.awt.Graphics

; abstract void drawString( String s, int x, int y )

6FKUHLEWHLQHQ6WULQJLQGHUDNWXHOOHQ)DUEHXQGGHPDNWXHOOHQ=HLFKHQVDW]'LH[XQG\:HUWHEHVWLP PHQGLH6WDUWSXQNWHGHU*UXQGOLQLH

; abstract void drawString( AttributedCharacterIterator iterator, int x, int y ) 6FKUHLEWHLQHQ6WULQJGHUGXUFKGHQ$WWULEXW,WHUDWRUJHJHEHQLVW

; abstract void drawChars( char data[], int offset, int length, int x, int y ) 6FKUHLEWGLH=HLFKHQNHWWHXQGEH]LHKWGLH'DWHQDXVHLQHP&KDU)HOG

; abstract void drawBytes( byte data[], int offset, int length, int x, int y ) 6FKUHLEWGLH=HLFKHQNHWWHXQGEH]LHKWGLH'DWHQDXVHLQHP%\WHIHOG

Einen neuen Zeichensatz bestimmen

'LH)XQNWLRQdrawString()YHUZHQGHWLPPHUGHQDNWXHOOHQ=HLFKHQVDW]8PGLHVHQ]XlQGHUQEHQXW]HQZLU GLH)XQNWLRQsetFont()'HUhEHUJDEHSDUDPHWHULVWHLQFont2EMHNWZHOFKHVZLUHUVWHU]HXJHQPVVHQ'HU .RQVWUXNWRUYRQFontLVWGXUFKYHUVFKLHGHQH3DUDPHWHUGHILQLHUW

class java.awt.Font implements Serializable

; Font( String name, int style, int size ) (U]HXJWHLQFont2EMHNW

Parameter des Font-Konstruktors

1DPH 'LH 1DPHQ GHV =HLFKHQVDW]HV N|QQHQ YRQ 6\VWHP ]X 6\VWHP XQWHUVFKLHGOLFK VHLQ 8QWHU :LQ17 0DF2V /LQX[ 6RODULV XQG ,5,; VLQG MHGHQIDOOV GLH =HLFKHQVlW]HMonospaced IUKHU CourierDialogSansSerif IUKHUHelvetica XQGSerif IUKHUTimesRoman HUODXEW XQWHU 0DF26 NRPPW QRFK GHU =HLFKHQVDW]Geneva KLQ]X 9RU -DYD JDE HV QRFK GHQ

=HLFKHQVDW]SymbolEH]LHKXQJVZHLVHZapfDingbatsGHUDEHUGXUFKGLH8QLFRGH=HLFKHQDE JHGHFNWZLUG

6WLO 'DVFont2EMHNW GHILQLHUW GUHL .RQVWDQWHQ XP GLH 6FKULIWDUW IHWW XQG NXUVLY GDU]XVWHOOHQ 'LH V\PEROLVFKHQ :HUWH VLQGFont.ITALICFont.BOLD XQG IU HLQHQ QLFKW DXVJH]HLFKQHWHQ 6FKULIWVDW]Font.PLAIN'LH$WWULEXWHN|QQHQPLWGHPELQlUHQ2GHURGHUGHPDULWKPHWLVFKHP 3OXV YHUEXQGHQ ZHUGHQ HLQ IHWWHU XQG NXUVLYHU =HLFKHQVDW] LVW VR GXUFK Font.BOLD|Font.ITALICEH]LHKXQJVZHLVHGXUFKFont.BOLD+Font.ITALIC]XHUUHLFKHQ

*U|‰H (LQH $QJDEH LQ 3XQNWHQ ZLH JUR‰ GLH 6FKULIW VHLQ VROO (LQ 3XQNW HQWVSULFKW HWZD =ROO HWZDPP

Beispiel: Ein Font-Objekt erzeugen

Font f = new Font( "Serif", Font.PLAIN, 14 );

+lXILJZLUGGLHVHV=HLFKHQVDW]2EMHNWVRIRUWLQsetFont()JHQXW]WVRZLH

setFont( new Font( "Serif", Font.BOLD, 20 ) );

Schulversion

(22)
(23)

,VW LP 3URJUDPP OHGLJOLFK GHU DNWXHOO YHUZHQGHWH =HLFKHQVDW] Q|WLJ N|QQHQ ZLUgetFont() YRQ GHU Graphics.ODVVHYHUZHQGHQ

abstract class java.awt.Graphics ; abstract Font getFont()

/LHIHUWGHQDNWXHOOHQ=HLFKHQVDW]

; abstract Font setFont( Font f )

6HW]WGHQ=HLFKHQVDW]IUGDVGraphics2EMHNW

Ableiten eines neuen Fonts aus einem gegebenen Font

6WHKWHLQFont]XU9HUIJXQJ6ROODXVJHKHQGYRQGLHVHPHLQQHXHVFont2EMHNWPLWHLQHUNOHLQHQbQGHUXQJ HWZDLQGHU*U|‰HRGHULP$WWULEXWIHWWNXUVLYKHUJHVWHOOWZHUGHQVRODVVHQVLFKGLHderiveFont())XQN WLRQHQHLQVHW]HQ

Beispiel

$XVJHKHQGYRQHLQHPH[LVWLHUHQGHQFont2EMHNWfVROOHLQQHXHU)RQWDEJHOHLWHWZHUGHQGHUMHGRFK3L[HO JUR‰LVW

Font font = f.deriveFont( 20f );

'HU3DUDPHWHULVWYRP7\SfloatXQGQLFKWYRP7\Sdouble.'HU*UXQGLVWGDVVGDV/LWHUDOVRQVWIU HLQH *DQ]]DKO VWHKW XQG DXI double DXWRPDWLVFK DQJHSDVVW ZHUGHQ N|QQWH XQG HV DXFK HLQ deriveFont(int)JLEWGDVOLHIHUWHLQHQQHXHQ)RQWLQQRUPDOIHWWRGHUNXUVLY%HLHLQHPfloatPXVVHLQ IDQGDV/LWHUDOJHVFKULHEHQZHUGHQVRGDVVHLQHU9HUZHFKVHOXQJYRUJHEHXJWZLUG

class java.awt.Font implements Serializable

; Font deriveFont( AffineTransformation trans )

(U]HXJWHLQQHXHV)RQW2EMHNWZHOFKHVEHUHLQ7UDQVIRUPDWLRQVREMHNWPRGLIL]LHUWLVW/LHIHUWHLQQHXHV

=HLFKHQVDW]REMHNWLQGHU*U|‰HYRQHLQHP3XQNWXQGNHLQHPEHVRQGHUHQ6WLO

; Font deriveFont( float size )

:LHGHU2ULJLQDO]HLFKHQVDW]QXUPLWHLQHUQHXHQ*U|‰H

; Font deriveFont( int style )

:LHGHU2ULJLQDO]HLFKHQVDW]QXUPLWHLQHPQHXHQ6WLO

; Font deriveFont( int style, float size )

:LHGHU2ULJLQDO]HLFKHQVDW]QXUPLWHLQHUQHXHQ*U|‰HXQGHLQHPQHXHQ6WLO

Notizen

Schulversion

(24)

Zeichensätze des Systems ermitteln

'LH8PVHW]XQJGHU1DPHQDXIGHQYHUVFKLHGHQHQ5HFKQHUSODWWIRUPHQEHUQLPPW-DYDVRKHL‰W+HOYHWLFD XQWHU:LQGRZV$ULDODEHUPLWGHQVHOEHQ/DXIZHLWHQ'HU*UXQGLVWGDVVGHU1DPH+HOYHWLFDYRQ$GREH JHVFKW]WLVW'LH+HUVWHOOHUVLQGDOVREHLLKUHU1DPHQVZDKOQLFKWIUHL'RFKDXFKXQWHU;KHL‰W+HOYHWLFD QLFKW+HOYHWLFD'DGLHYHUVFKLHGHQHQ=HLFKHQVDW]KHUVWHOOHUGHQ1DPHQ+HOYHWLFDDEHUNDXIHQN|QQHQLVW GHU2ULJLQDO]HLFKHQVDW]XQWHU;$GREH+HOYHWLFD'LH)LUPD$GREHZDUVRJQlGLJXQGKDWGLH=HLFKHQVlW]H DOV7\SH6FKULIWDUWHQEHLJHOHJW7\SH6FKULIWDUWHQVLQGXQWHU;UHODWLYQHXGHQQHUVWDOVYRQ,%0GHU 6HUYHU=XVDW]SURJUDPPLHUWZXUGHNRQQWHQ7\SH6FKULIWHQEHQXW]WZHUGHQ9RUKHUZXUGHQGLH$QZHQGHU LPPHUPLWNOHLQHQ.O|W]HQDEJHIHUWLJWZHQQGLH6FKULIWJU|‰HHLQPDO]XKRFKJHZlKOWZXUGH/HLGHULVWGLHV EHLHLQLJHQ=HLFKHQVlW]HQLPPHUQRFKGHU)DOO6HOEVW6WDU2IILFHXQWHU;KDWGDPLW]XNlPSIHQXQGZLU DXFKIDOOVZLUHLQHQ=HLFKHQVDW]YHUODQJHQGHUQXUDOV%LWPDSLQGHQ6WDQGDUGJU|‰HQJHUDVWHUWLVW

8P KHUDXV]XILQGHQ ZHOFKH =HLFKHQVlW]H DXI HLQHP 6\VWHP LQVWDOOLHUW VLQG OLHIHUW getAvailableFontFamilyNames()DXI HLQHPGraphicsEnvironment HLQ )HOG PLWFont2EMHNWH IUKHU ZXUGHQ GLH =HLFKHQVlW]H PLWgetFontList()0HWKRGH GHU .ODVVHToolkit HUIUDJW DEHU GLH 0HWKRGH LVW YHUDOWHW (LQ 2EMHNW YRP 7\S GraphicsEnvironment EHVFKUHLEW GLH =HLFKHQVlW]H GHV 6\VWHPV XQG GraphicsDevice2EMHNWH (LQGraphicsDevice LVW HLQH 0DOIOlFKH DOVR GDV ZRUDXI GDV 6\VWHP ]HLFKQHQ NDQQ'DVNDQQGHU%LOGVFKLUPVHLQDEHUDXFKHLQ'UXFNHURGHUHLQH+LQWHUJUXQGJUDILN'LHVWDWLVFKH)DEULN )XQNWLRQgetLocalGraphicsEnvironment()OLHIHUWHLQVROFKHVGraphicsEnvironment2EMHNW

abstract class java.awt.GraphicsEnvironment

; static GraphicsEnvironment getLocalGraphicsEnvironment() /LHIHUWGDVDNWXHOOHGraphicsEnvironment2EMHNW

; abstract Font[] getAllFonts()

/LHIHUW HLQ )HOG PLW DOOHQ YHUIJEDUHQFont2EMHNWHQ LP DNWXHOOHQGraphicsEnvironment LQ HLQHU

*U|‰HYRQHLQHP3XQNW

; abstract String[] getAvailableFontFamilyNames()

/LHIHUWHLQ)HOGPLWDOOHQYHUIJEDUHQ=HLFKHQVDW]IDPLOLHQLPDNWXHOOHQGraphicsEnvironment

; abstract String[] getAvailableFontFamilyNames( Locale l )

/LHIHUWHLQ)HOGPLWDOOHQYHUIJEDUHQ=HLFKHQVDW]IDPLOLHQLPDNWXHOOHQGraphicsEnvironmentGLH]X HLQHU6SUDFKHlJHK|UHQ

1DFKIROJHQGHV&RGHVHJPHQW]HLJWGLH,PSOHPHQWLHUXQJHLQHU6FKOHLIHGLHDOOH=HLFKHQVDW]QDPHQDXVJLEW:LU PVVHQNHLQ)HQVWHUJH|IIQHWKDEHQXPGLH=HLFKHQVlW]HDE]XUXIHQ

import java.awt.*;

class ListFont {

public static void main( String args[] ) {

for ( String fonts : GraphicsEnvironment.getLocalGraphicsEnvironment().

getAvailableFontFamilyNames() ) System.out.println( fonts );

} }

ListFont.java

1DFKGHP$XIUXIGHV3URJUDPPVLVWGLH$XVJDEHEHLPLU Arial

Arial Black Arial Narrow

Wingdings Wingdings 2 Wingdings 3

(25)

Die Klasse FontMetrics

-HGHVFont2EMHNWEHLQKDOWHWOHGLJOLFK,QIRUPDWLRQEHU6FKULIWVDW]IDPLOLH6FKULIWVDW]QDPHQ*U|‰HXQG6WLO 6LHELHWHWNHLQHQ=XJULIIDXIGLH$EPHVVXQJHQGHV=HLFKHQVDW]HV8PGLHVH'DWHQDXI]XVSUHQHU]HXJHQZLU HLQFontMetrics2EMHNW(VYHUZDOWHWPHWULVFKH,QIRUPDWLRQHQGLHPLWHLQHU6FKULIWDUWYHUEXQGHQVLQG'D]X JHK|UHQ2EHUXQG8QWHUOlQJH6FKULIWK|KHXQG=HLOHQDEVWDQG

8P GDVFontMetric2EMHNW GHV DNWXHOOHQ *UDILNNRQWH[WV ]X QXW]HQ ILQGHW VLFK HLQH 0HWKRGHgetFont() 'LHVH0HWKRGHJHK|UW]XUGraphics.ODVVHXQGLVWQLFKWPLWGHUgetFont()0HWKRGHDXVFontMetrics]X YHUZHFKVHOQ6LHYHUKlOWVLFK]ZDUJOHLFKLVWDEHUHLQHUDQGHUHQ.ODVVH]XJHRUGQHW

,QGHUpaint()0HWKRGHNDQQDOVRPLWWHOV

FontMetrics fm = getFontMetrics();

DXIGLH0HWULNHQGHVDNWXHOOHQ=HLFKHQVDW]HV]XJHJULIIHQZHUGHQ

abstract class java.awt.Graphics ; FontMetrics getFontMetrics()

/LHIHUWGLH)RQW0HWULNHQ]XPDNWXHOOHQ=HLFKHQVDW]

; abstract FontMetrics getFontMetrics( Font f ) /LHIHUWGLH)RQW0HWULNHQIUGHQ=HLFKHQVDW]f

'LH .ODVVH FontMetrics ELHWHW GLH IROJHQGHQ 0HWKRGHQ DQ ZREHL VLFK DOOH $QJDEHQ DXI GDV MHZHLOLJH

=HLFKHQVDW]REMHNW EH]LHKHQ %H]LHKHQ VLFK GLH 5FNJDEHSDUDPHWHU DXI GLH =HLFKHQJU|‰H VR LVW GLH $QJDEH LPPHULQ3L[HO

abstract class java.awt.FontMetrics implements Serializable

; int bytesWidth( byte data[], int off, int len ) int charsWidth( char data[], int off, int len )

*LEWGLH%UHLWHDOOHU=HLFKHQGHV)HOGV]XUFN%HJLQQWEHLoffXQGOLHVWlen=HLFKHQ

; int charWidth( int ch ), int charWidth( char ch ) /LHIHUWGLH%UHLWH]XHLQHP=HLFKHQ

; int getAscent()

*LEWGHQ$EVWDQGYRQGHU*UXQGOLQLH]XUREHUHQ*UHQ]H2EHUOlQJH]XUFN

; int getDescent()

*LEWGHQ$EVWDQGYRQGHU*UXQGOLQLH]XUXQWHUHQ*UHQ]H8QWHUOlQJH]XUFN

; Font getFont()

/LHIHUWGHQDNWXHOOHQ=HLFKHQVDW]

; int getHeight()

*LEW GLH 6FKULIWK|KH HLQHU 7H[W]HLOH LQ 3L[HO ]XUFN 6LH EHUHFKQHW VLFK DXV =HLOHQ GXUFKVFKXVV2EHUOlQJH8QWHUOlQJH

; int getLeading()

*LEWGHQ=ZLVFKHQUDXP]ZHLHU=HLOHQ]XUFN

; int getMaxAdvance()

/LHIHUWGLH%UHLWHGHVEUHLWHVWHQ=HLFKHQV

; int getMaxAscent()

/LHIHUW GDV 0D[LPXP DOOHU 2EHUOlQJHQ LQ 3L[HO (LQLJH =HLFKHQ N|QQHQ VLFK REHUKDOE GHU2EHUOlQJHEHZHJHQ

; int getMaxDescent()

/LHIHUW GDV 0D[LPXP DOOHU 8QWHUOlQJHQ LQ

3L[HO

Schulversion

(26)

; int[] getWidths()

/LHIHUWLQHLQHPQHXHQ*DQ]]DKOIHOGGLH%UHLWHQGHU=HLFKHQ]XUFN

; int stringWidth( String str )

*LEWGLH%UHLWHGHU=HLFKHQNHWWH]XUFNZHQQGLHVHJH]HLFKQHWZUGH

Einen String unterstreichen

:LU ZROOHQ QXQstringWidth() EHQXW]HQ XP XQWHUVWULFKHQHQ 7H[W GDU]XVWHOOHQ 'DIU JLEW HV NHLQH 6WDQGDUGIXQNWLRQ $OVR VFKUHLEHQ ZLU XQV HLQIDFK HLQH 0HWKRGH GLH GLH .RRUGLQDWHQ VRZLH GHQ 6WULQJ

EHUJHEHQEHNRPPW'LH0HWKRGHdrawUnderlinedString()VFKUHLEWPLWdrawString()GLH=HLFKHQNHWWH drawLine()HUKlOWGLH%UHLWHGHU/LQLHGXUFKGLH%UHLWHGHU=HLFKHQNHWWH'LH/LQLHLVW]ZHL3XQNWHXQWHUGHU

%DVHOLQH 1DWUOLFK DFKWHW VR HLQH NOHLQH )XQNWLRQ QLFKW DXI GDV $XVVSDUHQ YRQ %XFKVWDEHQ GLH XQWHU GHU

%DVHOLQHOLHJHQ'LH%XFKVWDEHQ\RGHUTVLQGGDQQXQWHQJQDGHQORVGXUFKJHVWULFKHQ

void drawUnderlinedString( Graphics g, int x, int y, String s ) {

g.drawString( s,10,10 );

g.drawLine( x, y + 2,

x + getFontMetrics(getFont()).stringWidth(s) , y + 2 );

}

True Type Fonts

*UDILVFKH2EHUIOlFKHQVWHOOHQVHOEVWYHUVWlQGOLFKZLH'UXFNHU=HLFKHQVlW]HGDU'RFKGHU:HJYRQGHU'DWHL ELV ]XU 'DUVWHOOXQJ LVW ODQJ XQG IKUW XQZHLJHUOLFK EHU GLH )LUPD $GREH GLH HUVWPDOLJ GLH VWDQGDUGLVLHUWH

=HLFKHQGHILQLWLRQ3RVW6FULSW|IIHQWOLFKPDFKWH*HQDXHUJHVDJWGHILQLHUW3RVW6FULSWQRFKHWZDVPHKUGRFK GDVVROOXQVKLHUQLFKWLQWHUHVVLHUHQ'LHHUVWHNRPPHU]LHOOH=HLFKHQVDW]UHYROXWLRQEHJDQQGDQQDOVGHU 'UXFNHU /DVHU:ULWHU YRQ $SSOH GDV $GREH)RUPDW 3RVW6FULSW UDVWHUQ NRQQWH 'LH 'HILQLWLRQ HLQHV =HLFKHQ VDW]HV ODJ ELV GDKLQ QXU LQ %LWPDSV YRU GRFK GLH 3RVW6FULSW=HLFKHQVlW]H ZLH DXFK GLH 7UXH7\SH=HLFKHQ VlW]HXPGLHHVVSlWHUJHKHQVROOODJHQDOV3XQNWEHVFKUHLEXQJYRU'LH5DVWHUXQJEHUVHW]WHGLHVH3XQNWHLQ HLQH%LWPDSGLHGDQQHQWZHGHUDXIGHP%LOGVFKLUPRGHUGHP'UXFNHUDXVJHJHEHQZXUGH'XUFKGLH3XQNW EHVFKUHLEXQJZDUHQDOVRQLFKWPHKUJU|‰HQDEKlQJLJH%HVFKUHLEXQJHQYRUKDQGHQVRQGHUQGLH=HLFKHQDXFK

*O\SKVJHQDQQWZXUGHQGXUFK/LQLHQXQG.XUYHQLQNXELVFKHQ%p]LHU.XUYHQEHVFKULHEHQ

'LH9LVXDOLVLHUXQJGHU=HLFKHQVlW]HPDFKWH0LFURVRIWXQG$SSOH6RUJHQGD$GREHPHKUHUH'HILQWLRQHQGHU 3RVW6FULSW=HLFKHQVlW]HSIOHJWHGDUXQWHU7\SH36XQG7\SH367\SHQXW]WVRJHQDQQWH+LQWV +LQZHLVH XP DXFK EHL XQWHUVFKLHGOLFKHQ *U|‰HQ XQG JUDILVFKHQ 2EHUIOlFKHQ RSWLPDOH 'DUVWHOOXQJHQ ]X]XODVVHQ 'LHVH 'HILQLWLRQ ZDU MHGRFK JHKHLP =HLFKHQVlW]H GHV 7\SH VHKHQ ]ZDU DXI GHP 3DSLHU JXW DXV QLFKW DEHU DXI GHP %LOGVFKLUP PLW QLHGULJHU $XIO|VXQJ KLHU IHKOHQ GLH ,QIRUPDWLRQHQ DXV GHQ +LQWV 0LFURVRIWXQG$SSOHZROOWHQQXQLKUH=HLFKHQVDW]DXVJDEHQLFKW$GREHEHUODVVHQGLHQDWUOLFKHLQHQ7\SH 5DVWHUHU LP 3URJUDPP KDWWHQ VRQGHUQ VLH GHILQLHUWHQ LKUH HLJHQH )RQW7HFKQRORJLH GLH QLFKW PHKU DXI

%p]LHU.XUYHQVRQGHUQDXITXDGUDWLVFKHQ%6SOLQHVEDVLHUWH$SSOHPDFKWHGDEHLGHQ$QIDQJPLW5R\DOZHO FKHVVSlWHULQ7UXH7\SH77XPJHWDXIWZXUGH'LHVZDUVHFKV-DKUHQDFKGHQ3RVW6FULSW)RQWV'HUHLQ]LJH +HUVWHOOHU GHU GHQQRFK EHL 3RVW6FULSW7\SH =HLFKHQVlW]HQ JHEOLHEHQ LVW LVW ,%0 PLW GHP %HWULHEVV\VWHP 26 'DQHEHQ QXW]WH DXFK 1H;W6WHS GLHVH =HLFKHQVDW]GHILQLWLRQHQ GRFK GDV 6\VWHP KDOOWH QLFKW ODQJH QDFK

1DFKGHP $SSOH GHQ $QIDQJ PLW 77 JHPDFKW KDWWH XQG HV LQ 0DF26 LQWHJULHUWH EHUQDKP DXFK 0LFURVRIWGDVVLFKELVGDKLQDQHLQHPZHQLJODXIIlKLJHQ3RVW6FULSW&ORQH7UXH,PDJHYHUVXFKWHGLH7HFKQR ORJLHIU:LQGRZV$GREHHUNDQQWHIUKGLH.RQVHTXHQ]GLHVHU$OOLDQ]XQG|IIQHWHGLH6SH]LILNDWLRQIU 3RVW6FULSW7\SH=HLFKHQVlW]HLP0lU],QGHU0LWWHGHV-DKUHVOLHIHUWH$GREH]XVlW]OLFKGHQ$GREH 7\SH0DQDJHU$70DXVGHU7\SHDEHUNHLQH7\SH3RVW6FULSW=HLFKHQVlW]HIUGHQ%LOGVFKLUPXQGIU QLFKW3RVW6FULSWIlKLJH'UXFNHUGDUVWHOOWH+HXW]XWDJHH[LVWLHUHQEHLGH'HILQLWLRQHQLPPHUQRFKSDUDOOHOXQG IU 'UXFNHU LVW GLH )UDJH ZHOFKH QXQ EHVVHU LVW QLFKW ]X EHDQWZRUWHQ 0RGHUQH 'UXFNHU KDEHQ DXFK HLQ HLJHQHV 7UXH7\SH5DVWHU LP 520 HLQJHEDXW ,Q =XNXQIW ZLUG GLH 8QWHUVFKHLGXQJ ZRKO DXFK XQZLFKWLJHU ZHUGHQGD0LFURVRIWGLHRIIHQH2SHQ7\SH6SH]LILNDWLRQDXFK7UXH7\SH2SHQ9HUVLRQJHQDQQWQDFK YRUQH EULQJW 'HU =HLFKHQVDW] 36 RGHU 7UXH7\SH ZLUG GDEHL LQ HLQHU 2SHQ7\SH'DWHL JHNDSVHOW XQG GHP 5DVWHUHUEHUJHEHQXQGEHUHFKQHW'DEHLEHUQLPPWGLH365DVWHUXQJ$GREHGLHHLQH=XVDPPHQDUEHLWPLW 0LFURVRIW XQWHUVWW]W XQG GLH 775DVWHUXQJ 0LFURVRIW ,Q =XNXQIW P|FKWHQ 0LFURVRIW XQG $GREH =HLFKHQ VlW]HLP2SHQ7\SHXQWHUVWW]HQXQGGHUHQ9HUEUHLWXQJI|UGHUQ

(27)

TTF in Java nutzen

'LH YRUGHILQLHUWHQ 6WDQGDUG]HLFKHQVlW]H 'LDORJ 'LDORJ,QSXW 0RQRVSDFHG 6HULI 6DQV6HULI 6\PERO VLQG OHLGHU HWZDV ZHQLJ 'RFK GLHFont.ODVVH ELHWHW GLH VWDWLVFKH )XQNWLRQcreateFont() DQ GLH DXV HLQHP (LQJDEHVWURPHLQHV7UXH7\SH=HLFKHQVDW]HVGDVHQWVSUHFKHQGHFont2EMHNWHUVWHOOW

Font f = Font.createFont( Font.TRUETYPE_FONT, new FileInputStream("f.ttf") );

'HU HUVWH 3DUDPHWHU LVW GLH IHVW YRUJHVFKULHEHQH .RQVWDQWHFont.TRUETYPE_FONT DQGHUH 3DUDPHWHU VLQG QLFKWGHILQLHUWXQGIKUHQ]XHLQHUIllegalArgumentException("font format not recognized")'HU ]ZHLWH 3DUDPHWHU LVW HLQ (LQJDEHVWURP DXV GHU %LQlUGDWHL PLW GHQ =HLFKHQVDW]LQIRUPDWLRQHQ 'LH 'DWHQ ZHUGHQDXVJHOHVHQXQG]XHLQHPFont2EMHNWYHUDUEHLWHW'DGLH'DWHQLQWHUQEHUHLQHQJHSXIIHUWHQ'DWHQ VWURP LQ HLQH WHPSRUlUH 'DWHL JHVFKULHEHQ ZHUGHQ LVW HLQH HLJHQH 3XIIHUXQJ EHU HLQHQ BufferedInputStreamQXU]XVlW]OLFKHU2YHUKHDG

:DUHQ GLH %HVFKUHLEXQJVLQIRUPDWLRQHQ LQ GHU 'DWHL XQJOWLJ VR HU]HXJW GLH Font.ODVVH HLQH FontFormatException("Unable to create font - bad font data")'DWHLIHKOHUIDOOHQKLHUQLFKWGD UXQWHUXQGZHUGHQH[WUDEHUHLQHIOExceptionDQJH]HLJW'HU'DWHQVWURPZLUGDQVFKOLH‰HQGQLFKWZLHGHU JHVFKORVVHQ

$QGLHVHU6WHOOHYHUZXQGHUWHVYLHOOHLFKWGDVVYRQGHU$UEHLWVZHLVHKHUGLH0HWKRGHcreateFont()GHUGHV .RQVWUXNWRUV lKQOLFK VHLQ PVVWH DEHU GHU 3DUDPHWHUOLVWH GLH $WWULEXWH IHKOHQ 'DV OLHJW GDUDQ GDVV GLH 0HWKRGH DXWRPDWLVFK HLQHQ =HLFKHQVDW] GHU *U|‰H LP 6WLOFont.PLAIN HU]HXJW 8P HLQHQ JU|‰HUHQ =HL FKHQVDW] ]X HU]HXJHQ PVVHQ ZLU HLQ ]ZHLWHVFont2EMHNW DQOHJHQ ZDV DP HLQIDFKVWHQ PLW GHU 0HWKRGH deriveFont()JHVFKLHKW

class java.awt.Font implements Serializable

; static Font createFont( int fontFormat, InputStream fontStream ) throws FontFormatException, IOException

/LHIHUWHLQQHXHV=HLFKHQVDW]REMHNWLQGHU*U|‰HYRQHLQHP3XQNWXQGNHLQHPEHVRQGHUHQ6WLO

2.4 Clipping-Operationen

$OOHSULPLWLYHQ=HLFKHQRSHUDWLRQHQZLUNHQVLFKDXIGHQJHVDPWHQ%LOGVFKLUPDXVXQGVLQGQLFKWDXIEHVWLPPWH

%HUHLFKH HLQJHVFKUlQNW :HQQ ZLU /HW]WHUHV HUUHLFKHQ ZROOHQ VHW]HQ ZLU HLQHQ VR JHQDQQWHQ&OLSSLQJ

%HUHLFKDX‰HUKDOEGHVVHQQLFKWPHKUJH]HLFKQHWZLUG/HLGHUZDULQGHU9HUJDQJHQKHLWGLH,PSOHPHQWLHUXQJ GLHVHV&OLSSLQJVLPPHUIHKOHUDQIlOOLJVRGDVVHLQHIDOVFKH=HLFKQXQJGXUFKDXVYRUNRPPHQNRQQWH:HUGD DXI1XPPHUVLFKHUJHKHQZLOOVROOWHHLQ2IIVFUHHQ%LOGDQOHJHQ2SHUDWLRQHQDXIGLHVHP,PDJHPDFKHQXQG GDQQ GDV %LOG ]HLFKQHQ 'RFK EOHLEHQ ZLU EHLP KHUN|PPOLFKHQ &OLSSLQJ 'LHV LVW HLQH (LJHQVFKDIW GHV DNWXHOOHQGraphic2EMHNWV0LWGHU0HWKRGHclipRect(int x, int y, int width, int height)OlVVW VLFKGLHVHU%HUHLFKHLQVFKUlQNHQ'DQQHUIROJHQDOOH2SHUDWLRQHQLQGLHVHP%HUHLFK'DVIROJHQGH3URJUDPP HU]HXJW]ZHL&OLSSLQJ%HUHLFKHXQGIOOWHLQHQVHKUJUR‰HQ%HUHLFKDXVGHUDEHUQLFKWVLFKWEDULVW

Notizen

Schulversion

(28)

import java.awt.*;

import javax.swing.*;

public class ClipDemo extends JPanel {

protected void paintComponent( Graphics g ) {

super.paintComponent( g );

Graphics gcopy = g.create();

// Clipping auf

g.clipRect( 100, 100, 100, 100 );

g.setColor( Color.ORANGE );

g.fillRect( 0, 0, 500, 500 );

g.setColor( Color.BLACK );

g.drawOval( 150, 100, 100, 100 );

// Zweiter Clipping-Bereich g.clipRect( 250, 250, 50, 50 );

g.setColor( Color.BLUE );

g.fillRect( 0, 0, 5000, 5000 );

// Die ursprüngliche Größe zurücksetzen gcopy.setColor( Color.YELLOW);

gcopy.fillRect( 50, 50, 20, 50 );

gcopy.dispose();

}

public static void main( String args[] ) {

JFrame f = new JFrame();

f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

f.setSize ( 400, 400 );

f.add( new ClipDemo() );

f.setVisible( true );

} }

ClipDemo.java

Den alten Zustand für Graphics wiederherstellen

)U GLH =HLFKHQRSHUDWLRQHQ LP &OLSSLQJ%HUHLFK JLEW HV QRFK HLQH DOWHUQDWLYH ,PSOHPHQWLHUXQJ 'LHVH YHU ]LFKWHWDXIGLH.RSLHGHV*UDILNNRQWH[WVPLWWHOVcreate()DP$QIDQJXQGVHW]WDP6FKOXVVYRUGLH6WHOOHYRQ gcopyHLQgetGraphics()PLWGHPVLFKGHUDOWH.RQWH[WZLHGHUKHUVWHOOHQOlVVW'DQQN|QQHQZLUZLHGHUPLW g.drawXXX() DUEHLWHQ XQGgcopy LVW EHUIOVVLJ 0LW GHP 2ULJLQDO N|QQHQ ZLU GDQQ GDV &OLSSLQJ ]XUFN VHW]HQXQGZLHGHURKQH=XVFKQLWWDUEHLWHQ:HQQZLUQDFKGHP&OLSSLQJGDV2ULJLQDOQLFKWPHKUEHQ|WLJHQ N|QQHQZLUVHOEVWYHUVWlQGOLFKDXIGLH.RSLHYHU]LFKWHQ

Alternative Formen

'XUFKsetClip()N|QQHQDOWHUQDWLY]XGHQUHFKWHFNLJHQ)RUPHQDXFKEHOLHELJHShape2EMHNWHGLH&OLSSLQJ )RUPYRUJHEHQ1DFKIROJHQGHpaintComponent()0HWKRGHEHQXW]WDOV%HVFKQLWWHLQ'UHLHFN

protected void paintComponent( Graphics g ) {

super.paintComponent( g );

Rectangle r = g.getClipBounds();

System.out.println( r );

Clipping-Bereiche

(29)

Polygon p = new Polygon(

new int[]{200,100,300}, new int[]{100,300,300}, 3 );

g.setClip( p );

g.setColor( Color.ORANGE );

g.fillRect( 0, 0, 500, 500 );

}

ClipDemo.java

%HLDOWHQ,PSOHPHQWLHUXQJHQIXQNWLRQLHUWGLHVQLFKW$XIGHU.RQVROHHUVFKHLQWGDQQHLQH)HKOHUPHOGXQJGHU IROJHQGHQ$UW

java.lang.IllegalArgumentException:\ setClip(Shape) only supports Rectangle objects

Verdeckte Bereiche und schnelles Bildschirmerneuern

&OLSSLQJ%HUHLFKHVLQGQLFKWQXU]XP(LQVFKUlQNHQGHU3ULPLWLY2SHUDWLRQHQVLQQYROO%HL%HUHLFKVEHUGHFNXQ JHQ LQ )HQVWHUQ OLHIHUQ VLH ZHUWYROOH ,QIRUPDWLRQHQ EHU GHQ QHX ]X ]HLFKQHQGHQ %HUHLFK %HL HLQHU JXWHQ

$SSOLNDWLRQ ZLUG QXU GHU 7HLO ZLUNOLFK QHX JH]HLFKQHW GHU DXFK EHUGHFNW ZXUGH 6R OlVVW VLFK 5HFKHQ]HLW VSDUHQ

Beispiel: Informationen über Clipping-Bereiche public void paint( Graphics g )

{

Rectangle r = g.getClipBounds();

System.out.println( r );

}

'DV3URJUDPPHU]HXJWHWZD

java.awt.Rectangle[x=4,y=23,width=392,height=373]

java.awt.Rectangle[x=104,y=87,width=292,height=309]

java.awt.Rectangle[x=104,y=87,width=286,height=211]

java.awt.Rectangle[x=104,y=87,width=243,height=196]

java.awt.Rectangle[x=104,y=87,width=221,height=219]

java.awt.Rectangle[x=101,y=89,width=221,height=219]

...

+LHUDXVODVVHQVLFKYHUVFKLHGHQH)HQVWHURSHUDWLRQHQDEOHLWHQ,FK KDEHHLQIUHPGHV)HQVWHUEHUGDV-DYD )HQVWHUJHVFKREHQXQGGDQQGDVIUHPGH)HQVWHUYHUNOHLQHUW'LHRectangle,QIRUPDWLRQHQJHEHQ$XIVFKOXVV

EHUGLH*U|‰HGHUQHX]X]HLFKQHQGHQ%HUHLFKH+DEHQZLUVFKRQGDUDQJHGDFKWGLH,QIRUPDWLRQLQHLQHP Image2EMHNW DE]XOHJHQ OlVVW VLFK ZXQGHUEDUdrawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)QXW]HQ+LHUPVVHQ ZLUGLH:HUWHDXVGHPRectangleDXVOHVHQXQGLQdrawImage()EHUWUDJHQgetClipBounds()OLHIHUWHLQ Rectangle2EMHNW GHVVHQ :HUWH IUdrawImage() Q|WLJ VLQG 'D MHGRFK DXFK EHOLHELJH )RUPHQ P|JOLFK VLQGOLHIHUWgetClip()HLQ6KDSH2EMHNWgetClipRect()LVWGLHYHUDOWHWH0HWKRGH]XgetClipBounds() VRQVWDEHULGHQWLVFK'LH0HWKRGHgetClipBounds(Rectangle)HLQHGHUZHQLJHQQLFKWDEVWUDNWHQ0HWKR GHQ LQGraphics OHJW GLH ,QIRUPDWLRQHQ LP EHUJHEHQHQRectangle2EMHNW DE ZHOFKHV DXFK ]XUFN JHOLHIHUWZLUG6LHUXIWQXUgetClipBounds()DXIXQGEHUWUlJWGLHYLHU$WWULEXWHLQGDV5HFKWHFN

Schulversion

(30)

3 Farben

,QGLHVHP.DSLWHOHUIDKUHQ6LH

Æ ZLH6LHPLW)DUEHQXQGXQWHUVFKLHGOLFKHQ)DUEW|QHQDUEHLWHQ Æ ZLH6LHYHUVFKLHGHQH)DUEPRGHOOHHLQVHW]HQ

Æ ZLH6LHPLWGHQ6\VWHP)DUEHQDUEHLWHQ

9RUDXVVHW]XQJHQ

9 =HLFKQHQPLWGHP$:7

3.1 Einleitung

'HU(LQVDW]YRQ)DUEHQLQ-DYD3URJUDPPHQLVW'DQNGHUColor.ODVVHXQGGHU)DUEUlXPHHLQIDFK'LH.ODV VHVWHOOWHLQH9LHO]DKOYRQ5RXWLQHQ]XU9HUIJXQJPLWGHQHQColor2EMHNWHHU]HXJWXQGPDQLSXOLHUWZHUGHQ N|QQHQ

class java.awt.Color

implements Paint, Serializable ; Color( float r, float g, float b )

(U]HXJWHLQ&RORU2EMHNWPLWGHQ*UXQGIDUEHQ5RW*UQXQG%ODX'LH:HUWHPVVHQLP%HUHLFK ELVOLHJHQ

; Color( int r, int g, int b )

(U]HXJWHLQColor2EMHNWPLWGHQ*UXQGIDUEHQ5RW*UQXQG%ODX'LH:HUWHPVVHQLP%HUHLFKELV OLHJHQ

; Color( int rgb )

(U]HXJWHLQ&RORU2EMHNWDXVGHPrgb:HUWGHUGLH)DUEHQ5RW*UQXQG%ODXNRGLHUW'HU5RWDQWHLO EHILQGHWVLFKXQWHUGHQ%LWVELVGHU*UQDQWHLOLQELVXQGGHU%ODXDQWHLOLQELV'DHLQ ,QWHJHULPPHU%LWEUHLWLVWLVWMHGH)DUEHGXUFKHLQ%\WH%LWUHSUlVHQWLHUW

(LQH SULYDWH )XQNWLRQtestColorValueRange() GHU Color.ODVVH EHUSUIW RE GLH :HUWH WDWVlFKOLFK ]ZLVFKHQ XQG HUVWHU )DOO RGHU ]ZLVFKHQ XQG ]ZHLWHU )DOO OLHJHQ :HQQ QLFKW ZLUG HLQH IllegalArgumentExceptionDXVJHO|VW,PGULWWHQ)DOOZHUGHQYRQGHU*DQ]]DKOQXUGLH)DUELQIRUPDWLRQHQ DXVGHQ%LWJHQRPPHQ6RQVWLJH:HUWHZHUGHQHLQIDFKQLFKWEHWUDFKWHWXQGPLWHLQHP$OSKD:HUWJOHLFK

EHUVFKULHEHQ6R]HLJWHVDXFKGHU(LQ]HLOHUDXVGHP4XHOOWH[WDQ

public Color( int rgb ) { value = 0xff000000 | rgb;

}

abstract class java.awt.Graphics ; abstract void setColor( Color c )

6HW]WGLHDNWXHOOH)DUEHGLHGDQQYRQGHQ=HLFKHQIXQNWLRQHQXPJHVHW]WZLUG

; abstract Color getColor() /LHIHUWGLHDNWXHOOH)DUEH

; abstract void setXORMode( Color c )

6HW]WGLH3L[HO2SHUDWLRQDXI;25$EZHFKVHOQGH 3XQNWHZHUGHQLQ GHU DNWXHOOHQ)DUEHXQGGHUPLW GLHVHU)XQNWLRQJHVHW]WHQ;25)DUEHJHVHW]W

(31)

+LQZHLV'LHPHQVFKOLFKH)DUEZDKUQHKPXQJ0HQVFKHQXQWHUVFKHLGHQ)DUEHQQDFKGUHL(LJHQVFKDIWHQ)DUE WRQ +HOOLJNHLW XQG 6lWWLJXQJ 'HU 0HQVFK NDQQ HWZD ]ZHLKXQGHUW )DUEW|QH XQWHUVFKHLGHQ 'LHVH ZHUGHQ GXUFKGLH:HOOHQOlQJHGHV/LFKWVEHVWLPPW'LH/LFKWLQWHQVLWlWXQG(PSILQGOLFKNHLWXQVHUHU5H]HSWRUHQOlVVW XQV HWZD IQIKXQGHUW +HOOLJNHLWVVWXIHQ XQWHUVFKHLGHQ %HL GHU 6lWWLJXQJ KDQGHOW HVVLFK XP HLQH 0LVFKXQJ PLW ZHL‰HP /LFKW +LHU HUNHQQHQ ZLU HWZD ]ZDQ]LJ 6WXIHQ 'DPLW NDQQ XQVHU YLVXHOOHV 6\VWHP HWZD ]ZHL 0LOOLRQHQ[[)DUEQXDQFHQXQWHUVFKHLGHQ

3.2 Farben einsetzen

Zufällige Farbblöcke zeichnen

8P GLH 0|JOLFKNHLWHQ GHU )DUEJHVWDOWXQJ HLQPDO ]X EHREDFKWHQ EHWUDFKWHQ ZLU GLH $XVJDEH HLQHV 3UR JUDPPVZHOFKHV5HFKWHFNHPLWZDKOORVHQ)DUEHQDQ]HLJW

import java.awt.*;

import java.util.Random;

import javax.swing.*;

public class ColorBox extends JPanel {

private Random r = new Random();

protected void paintComponent( Graphics g ) {

g.setColor( Color.WHITE );

g.fillRect( 0, 0, getWidth(), getHeight() );

for ( int y = 12; y < getHeight() – 25; y += 30 ) for ( int x = 12; x < getWidth() – 25; x += 30 ) {

g.setColor( new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)) );

g.fillRect( x, y, 25, 25);

g.setColor( Color.BLACK);

g.drawRect( x-1, y-1, 25, 25 );

} }

public static void main( String args[] ) {

JFrame f = new JFrame( "Neoplastizismus" );

f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

f.setSize( 300, 300 );

f.add( new ColorBox() );

f.setVisible( true );

} }

ColorBox.java

'DV)HQVWHUGHU$SSOLNDWLRQKDWHLQHJHZLVVH*U|‰HGLHZLUPLWsize()LQ GHU+|KHXQG%UHLWHDEIUDJHQ$QVFKOLH‰HQGHU]HXJHQZLU%O|FNHGLHPLW HLQHU]XIlOOLJHQ)DUEHJHIOOWVLQGfillRect()EHUQLPPWGLHVH$XIJDEH 'DGLHJHIOOWHQ5HFKWHFNHLPPHULQGHU9RUGHUJUXQGIDUEHJH]HLFKQHWZHU GHQ VHW]HQ ZLU GHQ =HLFKHQVWLIW GXUFK GLH )XQNWLRQsetColor() GLH QDWUOLFK 2EMHNWPHWKRGH YRQGraphics LVW (QWVSUHFKHQG JLEW HV HLQH NRUUHVSRQGLHUHQGH )XQNWLRQgetColor() GLH GLH DNWXHOOH 9RUGHUJUXQG IDUEHDOVColor2EMHNW]XUFNJLEW'LHVH)XQNWLRQGDUIQLFKWPLWGHQ)XQN WLRQHQgetColor(String)EH]LHKXQJVZHLVHgetColor(String, Color) DXVGHUColor.ODVVHYHUZHFKVHOWZHUGHQ

Programmierter Neoplastizismus

Schulversion

Referenzen

ÄHNLICHE DOKUMENTE

public static void main(String[] argv) { Socket socket;..

public static void main(String[] argv) throws IOException { URL url = new URL(argv[0]);. URLConnection connection

public static void main (String args[]) throws java.io.IOException {.

public static void main(String[] argv) { Socket socket;.

public static void main(String args[]) throws java.io.IOException { String message;. Socket socket =

• jedes Programm muss eine main-Methode implementieren um es ausführen zu können. public static void main(String[] args)

public static void main(String[] args) { // neues Random Objekt erzeugen Random rand = new Random();. // generiere mir eine Zahl zwischen 0

protected String getApplicationTitle() { return &#34;My Great Calculator&#34;; } public static void main(String[] args) {.