Java programmeerimise materjale Raami suurendada ja vähendada saame varemloodud Frame klassi kasutades. Kui aga tahame raamile joonistada, on mugavam raami klassi muuta - talle alamklass teha. Nii saame muuta meetodi paint sisu. Sellenimeline meetod kutsutakse välja, kui raam joonistatakse ekraanile. Parameetrina (sulgudes) antakse meetodile isend klassist Graphics, mille abil saab joonistada. Käsu drawLine kaks esimest parameetrit annavad joone ühe otsa koordinaadid (x ja y) ning tagumised teise otsa oma. import java.awt.*; public class Joonis1Raam extends Frame{ public void paint(Graphics g){ g.drawLine(0, 100, 200, 150); } } Et töö tulemust näha oleks, selleks tuleb nagu varemgi Raami isend luua ning see ekraanile manada. Nüüdsel juhul teeme raami aga juba meie endi poolt loodud raami alamklassi järgi, kus raami ekraanile joonistamisel raami sisse joon tõmmatakse. import java.awt.*; public class Joonis1{ public static void main(String argumendid[]){ Frame f=new Joonis1Raam(); f.setSize(200, 200); f.setVisible(true); } } Klassi Graphics abil saab päris mitmesuguseid kujundeid joonistada. Lisaks joontele ka ovaale, nelinurki ja muudki. Täpsemaid näiteid saab abiinfost (JDK 1.2.2 API). Iseseisva programmi töö algab alati meetodist nimega main. Eelmises näites lõime programmi töötamise tarvis kaks klassi: ühe abil kirjeldasime mida ekraanile joonistada ning teises palusime raam luua ning sinna joonistada. Need toimingud võib ka ühte klassi kokku panna. Klassis Joonis2 on kolm meetodit. Konstruktor on eriline meetod, mis käivitatakse vaid üks kord, siis kui isend luuakse. Konstruktoril on klassiga sama nimi. paint-meetod kutsutakse välja, kui ekraanile on vaja joonistada. Siin kasutatakse lisaks sirgjoontele ka ovaale. Ovaal joonistatakse ristküliku sisse ning neli koordinaati näitavadki selle ristküliku andmeid: esimesed kaks vasaku ülemise nurga asukohta, edasised laiust ja kõrgust. Kui viimased on võrdsed, siis on tegemist ringiga. Draw tähendab joone joonistamist, fill puhul värvitakse ka seest. SetColor määrab värvi, millega edaspidi joonistatakse. Staatiline main-meetod lõpus loob klassist Joonis2 uue isendi, mille konstruktor seejärel tööle hakkab. import java.awt.*; public class Joonis2 extends Frame{ public Joonis2(){ setTitle("Kriipsujuku"); setSize(100, 250); setVisible(true); } public void paint(Graphics g){ g.setColor(new Color(200, 100, 100)); g.fillOval(10, 60, 30, 30); g.setColor(Color.black); g.drawOval(10, 60, 30, 30); g.drawLine(25, 90, 25, 150); g.drawLine(25, 100, 5, 110); g.drawLine(25, 100, 45, 110); g.drawLine(25, 150, 15, 230); g.drawLine(25, 160, 35, 230); } public static void main(String argumendid[]){ new Joonis2(); } } Programmilõike saab panna käivituma sündmuste peale. Sündmusteks võivad olla näiteks nupule vajutus, hiire liigutamine või teksti muutmine. Sündmusele reageerimiseks tuleb luua kuular - klass, milles on meetod(id) sündmusele reageerimiseks ning mis teatab oma kirjeldavas osas, et ta mõistab vastavatele sündmustele reageerida. Järgnevas näites luuakse tekstivälja ja nupuga raam. setLayout(new FlowLayout()) määrab paigutuse, kus elemendid saab üksteise taha järjest panna. Teade "implements ActionListener" klassi kirjelduses näitab, et me loodud raami alamklass Joonis4 mõistab kuulata sündmusi (näiteks nupuvajutust). See kirjeldus on nagu tunnistus: et klass saaks omale sellise kirjelduse panna, peab ta ka tegelikult sisaldama meetodit, mida sündmuse toimumise korral käivitada. Liidese ActionListener juurde kuulub meetod actionPerformed nii nagu matemaatikatunnistuse juurde kuulub arvutusoskus. Meetod käivitatakse, kui sündmus toimub. Teadete saatjaid ja kuulareid võib olla mitu. Et programm teaks, millise sündmuse puhul milline kuular tuleb käivitada, selleks tuleb kuular allika juures registreerida. Selleks on rida nupp.addActionListener(this). This tähendab tõlkes iseennast ehk praegusel juhul klassi Joonis4. Nupule vajutamisel käivitatakse Joonis4 meetod actionPerformed, parameetrina tuleva ActionEvent'i kaudu on võimalik allika kohta andmeid saada. See on tarvilik näiteks juhul, kui on võimalik valida mitme vajutatava nupu vahel. Vajutuse peale võetakse tekstiväljast tekst, muudetakse numbriks ja pannakse muutujasse nr. Repaint käsib ekraani uuesti joonistada, s.t. käivitab meetodi paint. Selles joonistatakse ekraanile muutujas nr olev arv ringe. import java.awt.*; import java.awt.event.*; public class Joonis4 extends Frame implements ActionListener{ int nr=3; TextField tf=new TextField(" "+nr); Button nupp=new Button(" OK "); public Joonis4(){ setLayout(new FlowLayout()); add(tf); add(nupp); nupp.addActionListener(this); setSize(300, 200); setVisible(true); } public void paint(Graphics g){ for(int i=0; i