Java programmeerimise materjale. Et arvuti mõistaks kasutaja soovidele vastavalt käituda, selleks tuleb raalile kõik peensusteni selgeks teha. Arvutile käskluste andmiseks on loodud programmeerimiskeeled. Iga käsklus palub arvutil midagi teha. Kui meie näeme mõistlikult töötavat programmi, siis tegelikult täidab arvuti üksteise järele otstarbekalt kirjutatud käsklusi. Programmeerija tööks on käsud niimoodi kirja panna, et nende täitmise tulemusena arvuti kasutaja jaoks tarvilikku teha mõistab. Java keel võimaldab kirjutada mahukaid (mitme tuhande leheküljelisi) programme. Käsud pannakse "kestadesse", et oleks võimalik pikas tekstis orienteeruda. Ka lühikesel programmil peab ümber olema vähemalt kaks kesta: meetod ja klass. Kui kasutatakse varem valmistatud klasse, tuleb mõnikord kirjeldada nende klasside asukoht, et nad üles leitaks. Järgneva programmi kirjeldus: Esimene rida teatab, et klass Frame asub paketis java.awt. See klass suudab ekraanile tekitada pealkirjariba, nuppude ja servadega tühja akna. Kui klassi peaks vaja minema, teatakse teda sealt otsida. Rida "class Raamike" teatab, et klassi nimi on Raamike. Samas kataloogis paiknevaid klasse saab eristada nime järgi. Loogeline sulg tähistab klassi algust ning klass lõpeb, kui tema sulg kinni läheb. Selles klassis on vaid üks meetod, nimega main. Sellenimeline meetod hakkab tööle iseseisva programmi käivitamisel. Kui klassis main-meetodit pole (näiteks klassis Frame), siis saab seda kasutada vaid teise klassi kaudu. Meetodi sees olevaid käske hakkab arvuti järjestikku täitma. Esimese käsuga loome raami ning määrame talle pealkirjaks Esimene. Siis määrame suuruse ekraanipunktides ning lõpuks palume raam nähtavaks teha. Ongi kogu programm. import java.awt.Frame; class Raamike{ static void main(String argumendid[]){ Frame f=new Frame("Esimene"); f.setSize(200, 200); f.setVisible(true); } } Kui on vaja ühest paketist sisse tuua mitu klassi, siis võib klasside nime asemele panna tärni. Piiritleja public (avalik) tähendab, et vastavat klassi (või meetodit) on võimalik kasutada ka väljastpoolt kataloogi. Nii saab vajadusel väikestest klassidest midagi suuremat kokku lappida. Käsk setBackground määrab raami tausta ning setLocation raami asukoha ekraanil. import java.awt.*; public class Raamike2{ public static void main(String argumendid[]){ Frame f=new Frame("Esimene"); f.setSize(200, 200); f.setBackground(Color.green); f.setLocation(200, 100); f.setVisible(true); } } Kui tahame raami ekraanil liigutada, siis tuleb tema asukohta mõne aja tagant vahetada. Et liikumine liialt kiire ei oleks, selleks tuleb vahepeal oodata. Nii nagu kinos vahetuvad pildid mingi aja tagant. Ootamise käsuks on Thread.sleep ning sulgudes olev number näitab ootamise aega milli(ehk tuhandikes)sekundites. 1000 on siis parajasti terve sekund. Meetodi main sulgude järel on kirjas throws Exception. Sellega anname teada, et oleme märganud, et kasutame eriolukorraohtlikku meetodit Thread.sleep. Siin ta käitub ilusti, kuid suuremates programmides tuleb temaga mõnikord valvas olla, kui programmi osad teineteisega tülli lähevad. import java.awt.*; public class Raamike3{ public static void main(String argumendid[]) throws Exception{ Frame f=new Frame("Esimene"); f.setSize(200, 200); f.setVisible(true); Thread.sleep(1000); f.setLocation(200, 100); Thread.sleep(1000); f.setLocation(400, 100); } } Kui sooviksime kõik kohad välja kirjutada, kus raam sujuva liikumise teel asub, läheks me programm päris pikaks. Et kirjutusvaeva ning ka programmi mahtu vähendada, selleks loon tsükli. Tsüklit kasutatakse, kui tahetakse mõnda korraldust mitu korda anda. Siin arvutan mitmel korral raami uue asukoha ning seejärel joonistan ta sinna. Raami asukoha väärtuste hoidmiseks võtan kasutusele muutujad x ja y. Tsükli while sees olevaid käske korratakse seni kuni x-i väärtus on kolmesajast väiksem. Kui raam on jõudnud juba kolmesajanda ekraanipunktini, siis väljub programm tsüklist ning enam raami ei liiguta. import java.awt.*; public class Raamike4{ public static void main(String argumendid[]) throws Exception{ int x=0, y=150; Frame f=new Frame("Esimene"); f.setSize(200, 200); f.setVisible(true); while(x<300){ f.setLocation(x, y); Thread.sleep(100); x=x+5; } } } Tuntumaid värve saab ette anda konstandina (Color.red, Color.blue). Punasest, rohelisest ja sinisest osast kokku aga saab kokku segada värvi mis parajasti meeldib. Siin näites muudetakse raami tausta sinise värvi osa. import java.awt.*; public class Raamike5{ public static void main(String argumendid[]) throws Exception{ int punane=100, roheline=100, sinine=20; Frame f=new Frame("Esimene"); f.setSize(200, 200); f.setBackground(new Color(punane, roheline, sinine)); f.setVisible(true); Thread.sleep(1000); while(sinine<255){ f.setBackground(new Color(punane, roheline, sinine)); Thread.sleep(50); sinine=sinine+4; } } } Raami sisse saab lisada graafikakomponente. Siin näites on ülaservas tekstiväli. Nii raami kui muude komponentide kohal oleva kursori kuju saab määrata. import java.awt.*; public class Raamike6{ public static void main(String argumendid[]) throws Exception{ Frame f=new Frame("Esimene"); f.setSize(200, 200); TextField tf=new TextField(" Tervitus! "); f.add("North", tf); tf.setCursor(new Cursor(Cursor.HAND_CURSOR)); f.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); f.setVisible(true); } }