You are on page 1of 28

Napredne Web tehnologije i servisi Napredne Web tehnologije i servisi

Dr.sc. Dragutin Kermek


Sveuilite u Zagrebu
Fakultet organizacije i informatike
Pavlinska 2, Varadin 42000
dkermek@foi.hr
2. dio
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 2
Napredne Web tehnologije i servisi - FOI
Java paket. Kreiranje biblioteke klasa. Nasljeivanje svojstava u
paketu. Ugraene klase i suelja. Kolekcijski okvir. Grafiko korisniko
suelje. Upravljanje dogaajima.
Osnove programskog jezika Java
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 3
Napredne Web tehnologije i servisi - FOI
Podruja Java okoline
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 4
Napredne Web tehnologije i servisi - FOI
Java paket
package paket je skup datoteka u bytecode formatu
(.class) izmeu kojih postoji kohezija logika
povezanost
Paketi mogu biti strukturirani kao direktoriji tako da
svaki paket sadrava srodne klase, a dublja razrada
provodi se u paketima nie razine. Npr.
java
applet
awt
...
Razine se odvajaju tokom . umjesto / ili \, npr.
java.awt.image
Izvorni kod svake klase paketa treba biti pohranjen
kao zasebna .java datoteka.
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 5
Napredne Web tehnologije i servisi - FOI
Definiranje Java paketa
package NWTiS;
public abstract class Grada
{
private static int sljedeci_id = 0;
int id;
String naziv;
String izdavac;
protected Grada(String p_naziv, String p_izdavac)
{
id = sljedeci_id++;
naziv = p_naziv;
izdavac = p_izdavac;
}
public int sljedeci_id()
{
return sljedeci_id;
}
definiranje naziva
paketa
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 6
Napredne Web tehnologije i servisi - FOI
Definiranje Java paketa nastavak
protected String print()
{
String m_s = new Integer(id).toString() + " " + naziv.toString() + " " +
izdavac.toString();
return m_s;
}
}
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 7
Napredne Web tehnologije i servisi - FOI
Ukljuivanje cijelog Java paketa
import NWTiS.*;
class Primjer12
{
public static void main(String args[])
{
Casopis ddj = new Casopis("Doctor Dobb's Journal",
"CMP Media Inc. San Francisco, CA", 170, "1044-789X");
Casopis pp = new Casopis("Practical Photography",
"EMAP Active Ltd", 150, "0032-6445");
Knjiga ec = new Knjiga("Beginning E-Commerce...",
"Wrox Press Ltd", 777, "1-861003-98-6");
System.out.println(ddj.print());
System.out.println(pp.print());
System.out.println(ec.print());
System.out.println("Sljedeci ID: " + ddj.sljedeci_id());
System.out.println("Sljedeci ID: " + ec.sljedeci_id());
}
}
ukljuivanje cijelog
paketa svih klasa
Primjer12 Java paketi
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 8
Napredne Web tehnologije i servisi - FOI
Ukljuivanje pojedine klase Java paketa
class Primjer13
{
public static void main(String args[])
{
NWTiS.Casopis ddj = new NWTiS.Casopis("Doctor Dobb's Journal",
"CMP Media Inc. San Francisco, CA", 170, "1044-789X");
NWTiS.Casopis pp = new NWTiS.Casopis("Practical Photography",
"EMAP Active Ltd", 150, "0032-6445");
NWTiS.Knjiga ec = new NWTiS.Knjiga("Beginning E-Commerce...",
"Wrox Press Ltd", 777, "1-861003-98-6");
System.out.println(ddj.print());
System.out.println(pp.print());
System.out.println(ec.print());
System.out.println("Sljedeci ID: " + ddj.sljedeci_id());
System.out.println("Sljedeci ID: " + ec.sljedeci_id());
}
}
Primjer13 Java paketi
ukljuivanje
pojedine klase iz
paketa
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 9
Napredne Web tehnologije i servisi - FOI
Kreiranje Java biblioteke
Paket moe biti pohranjen kao jedna zajednika datoteka (slino kao .zip) s
nastavkom .jar
a mogue je i vie paketa zajedno pohraniti u jednu zajedniku datoteku
jar cvf NWTiS.jar NWTiS\*.class
added manifest
adding: PzaWeb/Analogna.class(in = 729) (out= 414)(deflated 43%)
adding: PzaWeb/Casopis.class(in = 717) (out= 384)(deflated 46%)
adding: PzaWeb/Grada.class(in = 934) (out= 524)(deflated 43%)
adding: PzaWeb/Knjiga.class(in = 715) (out= 385)(deflated 46%)
java -classpath .;./NWTiS.jar;%CLASSPATH% Primjer14
0 Doctor Dobb's Journal CMP Media Inc. San Francisco, CA 170 1044-789X
1 Practical Photography EMAP Active Ltd 150 0032-6445
2 Beginning E-Commerce... Wrox Press Ltd 777 1-861003-98-6
Sljedeci ID: 3
Sljedeci ID: 3
kreiranje
zajednikog paketa
ukljuivanje
vlastitog paketa
klasa i ostalih
paketa na putanji
CLASSPATH Primjer14 Java biblioteka
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 10
Napredne Web tehnologije i servisi - FOI
Kreiranje Java biblioteke
# posebno aplikacija i jar #
javac Primjer14.java
java Primjer14
jar cvf NWTiS.jar NWTiS\*.class
# pogledati NWTiS.jar i manifest
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 11
Napredne Web tehnologije i servisi - FOI
Kreiranje Java biblioteke
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 12
Napredne Web tehnologije i servisi - FOI
Kreiranje Java biblioteke
# briemo bytecode datoteke iz paketa
del NWTiS\*.class
# provjera izvravanja
java Primjer14
# izvravanje uz parametre
java -classpath .;.\NWTiS.jar Primjer14
set CLASSPATH=.
java -classpath %CLASSPATH%;.\NWTiS.jar Primjer14
set CLASSPATH=.\NWTiS.jar
java Primjer14
set CLASSPATH=.;.\NWTiS.jar
java Primjer14
CLASSPATH
varijabla okoline u
koju se postavlja
lista direktorija na
kojima se nalaze
.class datoteke kao
i lista .jar datoteka
koje sadre
razliite biblioteke.
Kompilator i
interpreter ju
automatski koriste
bez posebnog
navoenja
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 13
Napredne Web tehnologije i servisi - FOI
Kreiranje Java biblioteke
# zajedno aplikacija i jar, razliiti poloaj datoteka izvornog i izvrnog koda #
src - izvorni kod
NWTiS
classes - izvrni kod
NWTiS
dist - biblioteka, za distribuciju
cd src
javac -d ..\classes Primjer14.java
java -classpath ..\classes Primjer14
jar cvf ..\dist\NWTiS.jar ..\classes\
java -classpath ..\dist\NWTiS.jar Primjer14
# pogledati NWTiS.jar zato ne radi
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 14
Napredne Web tehnologije i servisi - FOI
Kreiranje Java biblioteke
jar cvf ..\dist\NWTiS.jar -C ..\classes .
# pogledati NWTiS.jar
java -classpath ..\dist\NWTiS.jar Primjer14
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 15
Napredne Web tehnologije i servisi - FOI
Kreiranje izvrne Java biblioteke
# zajedno aplikacija i jar, izvrni jar #
# vlastiti manifest #
# pogledati datoteku manifest
Manifest-Version: 1.0
Created-By: NWTiS 12.02.2010
Main-Class: Primjer14
jar cvfm ..\dist\NWTiS_1.jar manifest -C ..\classes .
# pogledati NWTiS_1.jar
java -jar ..\dist\NWTiS_1.jar
# stvoren je tzv. izvrni jar
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 16
Napredne Web tehnologije i servisi - FOI
Nasljeivanje u Java paketu
package NWTiS;
public abstract class Grada
{
private static int sljedeci_id = 0;
int id;
String naziv;
String izdavac;
protected Grada(String p_naziv, String p_izdavac)
{
id = sljedeci_id++;
naziv = p_naziv;
izdavac = p_izdavac;
}
protected int sljedeci_id()
{
return sljedeci_id;
}
...
}
zatiena metoda
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 17
Napredne Web tehnologije i servisi - FOI
Nasljeivanje u Java paketu nastavak 1.
import NWTiS.*;
class Primjer15
{
public static void main(String args[])
{
Casopis ddj = new Casopis("Doctor Dobb's Journal", "CMP Media Inc. San
Francisco, CA", 170, "1044-789X");
Casopis pp = new Casopis("Practical Photography", "EMAP Active Ltd", 150,
"0032-6445");
Knjiga ec = new Knjiga("Beginning E-Commerce...", "Wrox Press Ltd", 777,
"1-861003-98-6");
System.out.println(ddj.print());
System.out.println(pp.print());
System.out.println(ec.print());
System.out.println("Sljedeci ID: " + ddj.sljedeci_id());
System.out.println("Sljedeci ID: " + ec.sljedeci_id());
}
}
poziv zatiene
metode u klasi
Grada
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 18
Napredne Web tehnologije i servisi - FOI
Nasljeivanje u Java paketu nastavak 2.
javac Primjer15.java
Primjer15.java:14: No method matching sljedeci_id() found in class NWTiS.Casopis.
System.out.println("Sljedeci ID: " + ddj.sljedeci_id());
^
Primjer15.java:15: No method matching sljedeci_id() found in class NWTiS.Knjiga.
System.out.println("Sljedeci ID: " + ec.sljedeci_id());
^
2 errors
Zatiene metode mogu se koristiti samo unutar klasa paketa.
Primjer15 Java paketi
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 19
Napredne Web tehnologije i servisi - FOI
Ugraene klase i suelja
Snagu programskog jezika Java predstavljaju klase i suelja koja su ugraene u
njezin sustav i ine temelj njezinog koritenja.
To su:
Object
System
Properties
Enumeration
Iterator
Exception
Error
Runnable
Thread
Applet
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 20
Napredne Web tehnologije i servisi - FOI
Klasa Object
Klasa Object je ishodina klasa hijerarhijskog stabla klasa. Svi objekti
implementiraju njene metode.
java.lang.Object
boolean equals(Object obj)
Class getClass()
void notify()
void notifyAll()
String toString()
void wait()
void wait(long timeout)
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 21
Napredne Web tehnologije i servisi - FOI
Klasa System
Klasa System je specifina klasa koja nema objekte nego postoje varijable i
metode za klasu. Njena uloga je osiguravanje pristupa do standardnog ulaza,
izlaza, pogreke, do vanjski definiranih osobina, vaeeg vremena i dr.
java.lang.Object
|
+-java.lang.System
static PrintStream err
static InputStream in
static PrintStream out
static long currentTimeMillis()
static Properties getProperties()
static String getProperty(String key)
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 22
Napredne Web tehnologije i servisi - FOI
Klasa Properties
Klasa Properties predstavlja skup osobina (klju, vrijednost). Pogodna je za
spremanje podataka na spremnik(?) kao i za itanje.
java.lang.Object
|
+-java.util.Dictionary
|
+-java.util.Hashtable
|
+-java.util.Properties
String getProperty(String key)
Object setProperty(String key, String value)
[Hashtable] public Enumeration keys()
[Hashtable] boolean containsKey(Object key)
[Hashtable] int size()
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 23
Napredne Web tehnologije i servisi - FOI
Suelje Enumeration
Suelje Enumeration moraju implementirati klase iji e objekti generirati
seriju objekata, jedan po jedan, kojima se slijedno pristupa.
java.util.Enumeration
boolean hasMoreElements()
Object nextElement()
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 24
Napredne Web tehnologije i servisi - FOI
Ugraene klase i Enumeration nastavak 1.
import java.util.*;
class Primjer16 {
public static void main(String[] args) {
Properties props = System.getProperties();
Object obj;
for (Enumeration e = props.keys(); e.hasMoreElements() ;)
{
obj = e.nextElement();
System.out.println(obj.toString() + " => " +
props.get(obj).toString());
}
}
}
Primjer16 Ugraene klase i Enumeration
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 25
Napredne Web tehnologije i servisi - FOI
Ugraene klase i Enumeration nastavak 2.
java Primjer16
java.runtime.name => Java(TM) 2 Runtime Environment, Standard Edition
sun.boot.library.path => D:\Program Files\JavaSoft\JRE\1.3.1\bin
java.vm.version => 1.3.1-b24
java.vm.vendor => Sun Microsystems Inc.
java.vendor.url => http://java.sun.com/
path.separator => ;
java.vm.name => Java HotSpot(TM) Client VM
file.encoding.pkg => sun.io
java.vm.specification.name => Java Virtual Machine Specification
user.dir => E:\Nastava\NPzaWeb\Predavanja\Akad. godina 2001-2002\Java_Primjeri
java.runtime.version => 1.3.1-b24
java.awt.graphicsenv => sun.awt.Win32GraphicsEnvironment
os.arch => x86
java.io.tmpdir => D:\DOCUME~1\dkermek\LOCALS~1\Temp\
line.separator =>
java.vm.specification.vendor => Sun Microsystems Inc.
java.awt.fonts =>
os.name => Windows 2000
java.library.path => D:\WINNT\system32;.;D:\WINNT\System32;D:\WINNT;...
java.specification.name => Java Platform API Specification
java.class.version => 47.0
os.version => 5.0
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 26
Napredne Web tehnologije i servisi - FOI
Ugraene klase i Enumeration nastavak 3.
os.version => 5.0
user.home => D:\Documents and Settings\dkermek
user.timezone =>
java.awt.printerjob => sun.awt.windows.WPrinterJob
file.encoding => Cp1252
java.specification.version => 1.3
java.class.path => e:\JDBC;e:\JDBC\mysql.jar;e:\JDBC\ids.zip;e:\jdk1.3\lib;...
user.name => dkermek
java.vm.specification.version => 1.0
java.home => D:\Program Files\JavaSoft\JRE\1.3.1
user.language => en
java.specification.vendor => Sun Microsystems Inc.
awt.toolkit => sun.awt.windows.WToolkit
java.vm.info => mixed mode
java.version => 1.3.1
java.ext.dirs => D:\Program Files\JavaSoft\JRE\1.3.1\lib\ext
sun.boot.class.path => D:\Program Files\JavaSoft\JRE\1.3.1\lib\rt.jar;...
java.vendor => Sun Microsystems Inc.
file.separator => \
java.vendor.url.bug => http://java.sun.com/cgi-bin/bugreport.cgi
sun.io.unicode.encoding => UnicodeLittle
sun.cpu.endian => little
user.region => US
sun.cpu.isalist => pentium i486 i386
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 27
Napredne Web tehnologije i servisi - FOI
Suelje Iterator
Suelje Iterator moraju implementirati klase iji e objekti generirati seriju
objekata, jedan po jedan, kojima se slijedno pristupa. Slino kao Enumeration s
time da omoguava brisanje posljednje vraenog elementa
java.util.Iterator
boolean hasNext()
Object next()
void remove()
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 28
Napredne Web tehnologije i servisi - FOI
Ugraene klase i Iterator
import java.util.*;
class Primjer16_1 {
public static void main(String[] args) {
Properties props = System.getProperties();
Set elems = props.keySet();
Object obj;
for (Iterator i = elems.iterator(); i.hasNext() ;)
{
obj = i.next();
System.out.println(elems.size() + " : " +
obj.toString() + " => " +
props.get(obj).toString());
}
}
Primjer16_1 Ugraene klase i Iterator
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 29
Napredne Web tehnologije i servisi - FOI
Ugraene klase i Iterator uz brisanje
import java.util.*;
class Primjer16_2 {
public static void main(String[] args) {
Properties props = System.getProperties();
Set elems = props.keySet();
Object obj;
for (Iterator i = elems.iterator(); i.hasNext() ;)
{
obj = i.next();
i.remove();
System.out.println(elems.size() + " : " +
obj.toString() + " => " +
props.get(obj).toString());
}
}
}
Primjer16_2 Ugraene klase i Iterator
eli dohvatiti
obrisani element
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 30
Napredne Web tehnologije i servisi - FOI
Ugraene klase i Iterator uz brisanje
import java.util.*;
class Primjer16_3 {
public static void main(String[] args) {
Properties props = System.getProperties();
Set elems = props.keySet();
Object obj1, obj2;
for (Iterator i = elems.iterator(); i.hasNext() ;)
{
obj1 = i.next();
obj2 = props.get(obj1);
i.remove();
System.out.println(elems.size() + " : " + obj1.toString() +
" => " + obj2.toString());
}
}
}
Primjer16_3 Ugraene klase i Iterator
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 31
Napredne Web tehnologije i servisi - FOI
Kolekcije / kontejneri
Kolekcija/kontejner je objekt koji grupira vie elemenata u zajedniku cjelinu.
Slui za pohranjivanje, pretraivanje i manipuliranje podacima kao i za
prijenos podataka iz jedne metode u drugu.
Kolekcije tipino predstavljaju podatkovne jedinke koje formiraju prirodnu
grupu kao npr. skup slova, telefonski imenik i sl.
Ranije verzije od 1.5 ukljuile su kolekcije:
Vector
Hashtable
polje.
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 32
Napredne Web tehnologije i servisi - FOI
Kolekcijski okvir
Kolekcijski okvir je unificirana arhitektura za predstavljenje i manipuliranje
kolekcijama.
Svi kolekcijski okviri sadre 3 elementa:
1. suelja apstraktni tipovi podataka predstavljaju kolekcije. Suelja
omoguavaju kolekcijama da budu manipulirane neovisno o detaljima
njihove reprezentacije
2. implementacije - konkretne implementacije suelja kolekcija. To su
ponovno koritene strukture podataka.
3. algoritme - metode koje provode korisne obrade, kao sortiranje,
pretraivanje, na objektima koji implementiraju suelje kolekcije. Za te
algoritme kae se da su polimorfni jer ista metoda moe koristiti mnogo
razliitih implementacija suelja pripadajue kolekcija. Agoritmi su
ponovno koritene funkcionalnosti
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 33
Napredne Web tehnologije i servisi - FOI
Kolekcijska suelja
Osnovo suelje:
Collection.
Njegova proirenja:
Set
List
SortedSet
Queue
BlockingQueue.
Ostala suelja ne proiruju Collection ve predstavljaju povezivanje kljua i
vrijednosti:
Map
SortedMap
ConcurrentMap.
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 34
Napredne Web tehnologije i servisi - FOI
Kolekcijske implementacije
Implementacije
Hash
Table
Resizable
Array
Balanced
Tree
Linked List
Hash Table +
Linked List
Suelja
Set HashSet TreeSet LinkedHashSet
List ArrayList LinkedList
Map HashMap TreeMap LinkedHashMap
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 35
Napredne Web tehnologije i servisi - FOI
Ugraene klase i generiki pristup
import java.util.*;
class Primjer16_4 {
public static void main(String[] args) {
Properties props = System.getProperties();
Set<Object> elems = props.keySet();
Object obj;
for (Iterator<Object> i = elems.iterator(); i.hasNext();)
{
obj = i.next();
System.out.println(elems.size() + " : " +
obj.toString() + " => " +
props.get(obj).toString());
}
}
}
Primjer16_4 Ugraene klase, generiki pristup i Iterator
Tek od Java 2 SE 5 1.5
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 36
Napredne Web tehnologije i servisi - FOI
Ugraene klase i generiki pristup
import java.util.*;
class Primjer16_5 {
public static void main(String[] args) {
Properties props = System.getProperties();
Set<Object> elems = props.keySet();
for (Object obj : elems)
{
System.out.println(obj.toString() + " => " +
props.get(obj).toString());
}
}
}
Primjer16_5 Ugraene klase i generiki pristup
Tek od Java 2 SE 5 1.5
tzv. for-each petlja
posebno korisna
kod kolekcija
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 37
Napredne Web tehnologije i servisi - FOI
Klasa Applet
Klasa Applet je mali program koji se ne moe sam izvravati nego se izvrava
unutar druge aplikacije (preglednik) ili posebnog programa iz JDK za
izvravanje appleta (appletviwer).
java.lang.Object
|
+-java.awt.Component
|
+-java.awt.Container
|
+-java.awt.Panel
|
+-java.applet.Applet
void destroy()
AppletContext getAppletContext()
URL getCodeBase()
URL getDocumentBase()
String getParameter(String name)
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 38
Napredne Web tehnologije i servisi - FOI
Klasa Applet nastavak 1.
void init()
void start()
void stop()
void play(URL url)
void resize(int width, int height)
[Component] Color getBackground()
[Component] Cursor getCursor()
[Component] Font getFont()
[Component] Color getForeground()
[Component] void paint(Graphics g)
[Component] void repaint()
[Component] void setBackground(Color c)
[Component] void setCursor(Cursor cursor)
[Component] void setFont(Font f)
[Component] void setForeground(Color c)
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 39
Napredne Web tehnologije i servisi - FOI
Applet
Applet mala aplikacija, je program koji se izvrava unutar preglednika, a
odreen je oznakom
<applet code="nazivappleta" width=x height=y></applet>
Ponaanje appleta definirano je klasom Applet.
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 40
Napredne Web tehnologije i servisi - FOI
Applet
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 41
Napredne Web tehnologije i servisi - FOI
Applet nastavak 1.
import java.applet.Applet;
import java.awt.*;
public class Primjer22 extends Applet
{
public void paint(Graphics g)
{
g.drawString("Prvi applet", 50, 50);
}
}
Primjer22 Prvi applet u pregledniku
java Primjer22
appletviewer Primjer22.html
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 42
Napredne Web tehnologije i servisi - FOI
Applet nastavak 2.
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
public class Primjer23 extends Applet{
String text = "Ovo je jednostavan applet";
public void init() {
setBackground(Color.cyan);
}
public void start() {
System.out.println("krecem...");
setBackground(Color.blue);
}
public void stop() {
System.out.println("zaustavljam...");
}
public void destroy() {
System.out.println("priprema za praznjenje...");
}
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 43
Napredne Web tehnologije i servisi - FOI
Applet nastavak 3.
public void paint(Graphics g){
System.out.println("Paint");
g.setColor(Color.blue);
g.drawRect(0, 0,
getSize().width -1,
getSize().height -1);
g.setColor(Color.red);
g.drawString(text, 15, 25);
}
}
System.out ispisuje poruke u Java Console.
Primjer23 Drugi applet (izvravanje)
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 44
Napredne Web tehnologije i servisi - FOI
JDK primjeri Appleta
Primjeri iz JDK:
http://java.sun.com/j2se/1.3/docs/relnotes/demos.html
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 45
Napredne Web tehnologije i servisi - FOI
Grafiko korisniko suelje
Aplikacije s grafikim korisnikim sueljem koriste se za razne poslovne
primjene (banke, osiguravajue kue, ISVU, ...) u kojima je potrebno masovno
unositi podatke za sloene poslovne sustave.
Takoer se koristi za razne simulacije u kojima je vana parametrizacija rada
uz grafiki prikaz podataka (2D, 3D i sl).
Izvorno je kreiran Abstract Window Toolkit (AWT) .
Posebno je dodan Swing kao proirenje osnovnog skupa klasa. To je Model-
View-Controle (MVC) okvir za Java GUI..
Primjeri za Swing:
{JDK}/demo/jfc/SwingSet2/SwingSet2.html (ovdje je veza na moju instalaciju)
http://download.java.net/javadesktop/swingset3/SwingSet3.jnlp
IBM razvio Standard Widget Toolkit (SWT), koji je vie usmjeren koritenju
platformskih osobina i koji se koristi kod Eclipse.
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 46
Napredne Web tehnologije i servisi - FOI
Grafiko korisniko suelje
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 47
Napredne Web tehnologije i servisi - FOI
Upravljanje dogaajima
Aplikacijski kostur-okvir (Application framework) sadri klase koje upravljaju
radom aplikacije odnosno appleta.
Kod klase Applet pozivaju se izmeu ostalih metode:
-init()
-start()
-stop()
-destroy()
Kod aplikacije poziva se metoda:
-main()
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 48
Napredne Web tehnologije i servisi - FOI
Upravljanje dogaajima u korisnikom suelju
U grafikom korisnikom suelju (GUI) susreu se objekti razliitih klasa
(Label, TextField, Button, ...) koji u svojem koritenju mogu biti
podvrgnuti odreenim aktivnostima koje generiraju pripadajue dogaaje
(pritisak tipke enter, pritisak tipke na miu, prijelaz na objekt i silazak s njega,
dobivanje i gubljenje fokusa i sl.).
Objekti trebaju obraivati njima pridruene dogaaje prema scenariju
projekta i provoditi potrebne aktivnosti.
Obrada dogaaja mogua je na dva naina:
-starim modelom dogaaja
-novim modelom dogaaja.
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 49
Napredne Web tehnologije i servisi - FOI
Stari model upravljanja dogaajima u GUI
Stari model upravljanja dogaajima (MUD) ugraen je u JDK 1.0 i temelji se
na zastarjelim/odbaenim metodama kao npr:
public boolean action(Event evt, Object what)
public boolean mouseDown(Event evt, int x, int y)
public boolean mouseEnter(Event evt, int x, int y)
public boolean mouseExit(Event evt, int x, int y)
u kojima je potrebno ispitivati na koji objekt se odnosi dogaaj.
Sve metode su tipa boolean i vraaju true kada se radi o zahtjevanom dogaaju.
U tom sluaju zavrava se obrada dogaaja. Metode vraaju false kada
aplikacijski okvir treba nastaviti s odradom dogaaja.
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 50
Napredne Web tehnologije i servisi - FOI
Stari MUD u GUI - nastavak
Postupak pronalaenja objekta nije jednostavan jer sadri razne provjere, od
klase do poznatog teksta u objektu.
public boolean action(Event event, Object obj)
{
Object oTarget = event.target;
if(oTarget instanceof Button)
{
Button tipka = (Button) oTarget;
String operacija = tipka.getLabel();
if(operacija.compareTo("+") == 0)
{
// obrada dogaaja
return true;
}
}
return true;
}
Primjer31 Obrada dogaaja
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 51
Napredne Web tehnologije i servisi - FOI
Novi model upravljanja dogaajima u GUI
Novi model upravljanja dogaajima (MUD) ugraen je u JDK 1.1 i temelji se na
klasama koje primaju dogaaje (sluai). One implementiraju odreena suelja
za obradu dogaaja, kao npr:
public interface ActionListener extends EventListener
public abstract class MouseAdapter extends Object implements
MouseListener
public abstract class KeyAdapter extends Object implements KeyListener
u kojima je potrebno ispitivati na koji objekt se odnosi dogaaj.
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 52
Napredne Web tehnologije i servisi - FOI
Novi MUD u GUI nastavak 1.
Akcija koja rezultira dogaajem Vrsta sluaa
pritisak gumba, pritisak return kod pisanja u
TextField, izbor stavke menua
ActionListener
zatvaranje glavnog prozora ili okvira WindowListener
pritisak tipke mia iznad komponente MouseListener
prijelaz mia preko komponente MouseMotionListener
komponenta postaje vidljiva ComponentListener
komponenta dobija fokus FocusListener
promjena izbora u tablici ili listi ListSelectionListener
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 53
Napredne Web tehnologije i servisi - FOI
Novi MUD u GUI nastavak 2.
Svakom objektu potrebno je pridruiti klasu koja e upravljati nekim njegovim
dogaajima, tj. koja e prislukivati odreene dogaaje.
Klasa za GUI (Applet, Frame, ...) moe sama prislukivati dogaaje ili to radi
neka njena unutarnja klasa. Moe vie klasa prislukivati dogaaje na raznim
razinama.
public class Primjer31_2 extends Applet implements ActionListener
{
...
m_zbroji.addActionListener(this);
m_oduzmi.addActionListener(this);
SymMouse aSymMouse = new SymMouse();
m_zbroji.addMouseListener(aSymMouse);
m_oduzmi.addMouseListener(aSymMouse);
...
class SymMouse extends MouseAdapter
{
...
}
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 54
Napredne Web tehnologije i servisi - FOI
Novi MUD u GUI nastavak 3.
Postupak pronalaenja objekta je jednostavniji jer se u provjerama koriste
objekti koji mogu sudjelovati u stvaranju dogaaja.
public void actionPerformed(java.awt.event.ActionEvent event)
{
Object object = event.getSource();
if (object == m_zbroji)
mZbroji_ActionPerformed(event);
else if (object == m_oduzmi)
mOduzmi_ActionPerformed(event);
}
Primjer31_2 Obrada dogaaja nova metoda s obradom u internoj klasi
Primjer31_1 Obrada dogaaja nova metoda s obradom u samoj klasi
Prof.dr.sc. D.Kermek, Fakutet organizacije i informatike, Varadin 55
Napredne Web tehnologije i servisi - FOI
Literatura
http://download.oracle.com/javase/tutorial/java/index.html
http://download.oracle.com/javase/tutorial/essential/index.html
http://download.oracle.com/javase/tutorial/collections/index.html
http://download.oracle.com/javase/tutorial/ui/index.html
http://download.oracle.com/javase/tutorial/uiswing/index.html
http://download.oracle.com/javase/tutorial/uiswing/events/index.h
tml
http://java.net/projects/swingset3/

You might also like