Metodi iz klase Applet

 Definicija klase Applet uključuje metode init(), start(), stop(),... ali kao prazne blokove koda, npr.

public void init()

{

 }
 
 

Ovi blokovi koda ne rade nista, ali povezuju ime metoda sa onim sistemskim događajima koji su relevantni. Ako se kreira korisnički init metod, on će zameniti originalni i biće izvren kada se aplet učita prvi put.

  Primer 1 Ispis teksta "Poruka je" pri tacno jednom pri pokretanju apleta, a potom teksta "startovala" pri svakom ucitavnju apleta ili ponovnom ucitavanju strane sa apletom i teksta "zaustavljena" pri zaustavljanju apleta.

    import java.awt.*;

   import java.applet.*;    //uobicajeno uvozenje

  public class StartStop extends Applet {

     StringBuffer poruka; //objekat poruka klase StringBuffer ce sadrzati tekst poruke ispisa na Web strani

     public void init()

               { poruka =new StringBuffer("Poruka je ..."); /*polazna poruka*/}

   public void start()

           { poruka.append("startovala ..."); /*tekst koji se dodaje  poruci kada aplet pocne da radi*/}

   public void stop()

     { poruka.append("zaustavljena ..."); /*tekst koji se dodaje  poruci kada se aplet zaustavi*/}

   public void paint(Graphics g)

     { g.drawString(poruka.toString(), 100, 150); /*metod paint ispisuje tekst poruke*/}

  }

  Primer HTML koda za testiranje apleta iz primera 1

 
<html>
<head>
<title> Metodi klase Applet </title>
</head><body> <p>Izlaz apleta</p>
<p><applet code = "StartStop.class" width=400 height =400 >  </applet>
</body>
</html>
Za ispis teksta poruke (objekta klase StringBuffer konvertovanog u string sa metodom toString() iz klase StringBuffer) upotrebljen je metod drawString koji prihvata tri parametra: tekst, x, y koordinate koje određuju poziciju teksta u pixelima. Brojanje počinje od gornjeg levog ugla prozora i nastavlja se nadole i nadesno. Tačno pozicioniranje teksta mora da uzme u obzir i veličinu fonta i dužinu teksta. U primeru 1 tekst poruke

 Poruka je...pocela...zaustavljena...pocela...zaustavljena...
je udaljen 100 tačaka od leve i 150 od gornje ivice prozora.

Tekst može biti niska unutar dvostrukih navodnika, String promenljiva, ma koji objekat ili vrednost koji se mogu konvertovati u String.
g predstavlja objekat klase Graphics i definisan je redom

   public void paint(Graphics g)

Ispis na ekranu se postiže preko objekata izvedenih iz klase Graphics iz java.awt (Abstract Windows Toolkit). Da bismo mogli da koristimo ove klase moramo uneti njihov kod u svoj program naredbom import.

Kako apleti su objekti izvedeni iz klase Applet, jedne od grupa klasa java.applet, onda je jasno da je obavezno uvesti naredbom import i java.applet.Applet, tj. jednu ili vise klasa iz skupa java.applet.*  odnosno java.awt.*

   public class StartStop extends Applet

Ovom linijom zapocinje aplet ciji kod je ucinjen javnim da bi se mogao izvrsiti i dobiti ime klase StartStop.

 

 
 

 

Primer 2 Aplet koji ispisuje osnovnim fontom poruke "gore levo", "gore desno", "sredina", "dole levo", "dole desno" u odgovarjuce uglove i centar apleta.

    import java.awt.*;

   import java.applet.*;    //uobicajeno uvozenje

  public class DrawTekst extends Applet {

     String poruka1=new String("gore levo"); /*objekat poruka1 klase String ce sadrzati tekst poruke ispisa u gornji levi ugaona Web strani*/

     StringBuffer poruka2=new StringBuffer("gore desno"); /*objekat poruka2 klase StringBuffer ce sadrzati tekst poruke ispisa u gornji desni ugao na Web strani, ali se mora konvertovatu u String kada se prosledjuje metodu drawString */

   public void paint(Graphics g)

     { g.drawString(poruka1, 0, 10);    g.drawString(poruka2.toString(), 440, 10);

       g.drawString("dole levo", 0, 200);    g.drawString("gore desno", 420, 200);

       g.drawString("sredina", 200, 100);

    }

  }

  Primer HTML koda za testiranje apleta iz primera 2

 
<html>
<head>
<title> Pozicioniranje teksta </title>
</head><body> 
<p><applet code = "DrawTekst.class" width=400 height =400 >  </applet>
</body>
</html>


Osnovna velicina fonta u prethodnom primeru je 10. Ako se zeli promena fonta, onda se koristi klasa Font i njeni metodi za definisanje, postavku,... fonta.

Primer 3 Aplet koji ispisuje osnovnim fontom velicine 24 pointa poruke "gore levo", "gore desno", "sredina", "dole levo", "dole desno" u odgovarajuce uglove i centar apleta.

import java.awt.*;

import java.applet.*;    //uobicajeno uvozenje

  public class DrawTekst extends Applet {

     String poruka1=new String("gore levo"); /*objekat poruka1 klase String ce sadrzati tekst poruke ispisa u gornji levi ugaona Web strani*/

     StringBuffer poruka2=new StringBuffer("gore desno"); /*objekat poruka2 klase StringBuffer ce sadrzati tekst poruke ispisa u gornji desni ugao na Web strani, ali se mora konvertovatu u String kada se prosledjuje metodu drawString */

    Font novifont=new Font("SanSerif", Font.BOLD, 24);  //definisanje fonta ...

   public void paint(Graphics g)

     {  g.setFont(novifont);    //... primena novog fonta uvecanog i boldiranog, a to uzrokuje i nove x,y koordinate

       g.drawString(poruka1, 0, 20);    g.drawString(poruka2.toString(), 375, 20);

       g.drawString("dole levo", 0, 190);    g.drawString("gore desno", 350, 190);

       g.drawString("sredina", 200, 100);

    }

  }
 
 

    Fontovi

JAVA omogućava programerima kontrolu izgleda teksta. Jedna od često korišćenih klasa jeste i klasa Font.

Klasa Font ima tri osobine:

Najjednostavniji način upotrebe fontova jeste smeštanje stilova u posebne Font objekte koji se definišu pri kreiranju, npr.

 Font novi=new Font("TimesRoman", Font.BOLD, 36);

Ako se zeli upotrebiti ovaj stil, koristi se metod setFont(), npr. g.setFont(novi);

Novi font je aktivan dok se ne podesi neki drugi font.

Primer3 Aplet koji postavlja i menja tri tipa font-a

import java.awt.*;

import java.applet.*;    //uobicajeno uvozenje

  public class PromenaFonta extends Applet {

    Font zaglavlje1=new Font("Helvetica", Font.BOLD, 18);  //deklarisanje i definisanje Font objekta zaglavlje1

Font zaglavlje=new Font("TimesRoman", 3, 24);  //definisanje fonta, 3 je za BOLD+ITALIC

Font zaglavlje2=new Font("Courier", 0, 14);  //deklarisanje i definisanje Font objekta zaglavlje2

  public void paint(Graphics g)

     {  g.setFont(zaglavlje);    //postavljanje fonta

       g.drawString("Pisi .....", 0, 30);

      g.setFont(zaglavlje1);    //postavljanje fonta

       g.drawString("Pisi .....", 0, 60);

       g.setFont(zaglavlje2);    //postavljanje fonta

       g.drawString("Pisi .....", 0, 90);

    }
 
 

                                                Boje

Boje se u RGB modelu formiraju na već opisan način (posetiti se atributa oznake BODY u HTML školi) kombinacijom intenziteta crvene, zelene i plave boje. Intenzitet svake boje je u opsegu od 0-255, te se teoretski može dobiti oko 24 000 000 boja, ali zavisno od graf. karte zavisi koliko boja će biti prikazano.

 JAVA nudi nekoliko načina za podešavanje boja. Jedan od njih je da se boje definišu preko klase Color.

   Color crvena=new Color(255, 0, 0); /* kreiran je objekat crvena klase Color i definisan je kao boja sa najjacim intenzitetom crvene i nultim intenzitetom zelene i plave */

Tekst i objekti koji se iscrtavaju na ekranu imaju tekuću (prethodno upotrbljenu) boju, te se pre iscrtavanja na ekranu mora podesiti željena boja. U tu svrhu se koristi metod setColor koji prihvata objekat klase Color, npr. g.setColor(crvena);

Primer 4 Kreirati aplet koji će prikazati tri poruke iscrtane crvenom, plavom, crvenkasto-braon bojom.
 

import java.awt.*;

import java.applet.*;    //uobicajeno uvozenje

  public class PromenaBoja extends Applet {

  Color crvena=new Color(255, 0, 0);  //deklarisanje i definisanje Color objekta crvena

  Color plava=new Color(0, 0, 255);

  Color braon=new Color(80, 64, 0);

 Font zaglavlje1=new Font("Helvetica", Font.BOLD, 18);  //deklarisanje i definisanje Font objekta zaglavlje1

  public void paint(Graphics g)

     {  g.setFont(zaglavlje1);    //postavljanje fonta

       g.setColor(crvena);   g.drawString("Pisi .....", 0, 30);

      g.setColor(plava);   g.drawString("Pisi .....", 0, 60);

     g.setColor(braon);   g.drawString("Pisi .....", 0, 90);

    }

  }
 
 

 Kontrolosanje miša

Kontrola miša je neophodna pri kreiranju igara ili interaktivnih grafičkih programa.Postoji više načina da se to uradi, ali je najjednostavnije koristiti metode mouseDown(), mouseUp(), mouseDrag().

One se aktiviraju odgovarajučim pomeranjem miša i preuzimaju trenutne koordinate kursora

   public boolean mouseDown(Event e, int x, int y)

Metod se izvršava kada korisnik pritisne dugme miša. Vrednosti x, y predstavljaju horizontalnu i vertikalnu koordinatu kursora u odnosu na gornji levi ugao prozora. Ako se kursor nalazi u radnom prostoru ili nekoj komponenti grafičkog okruženja, onda se vrednosti koordinata određuju u odnosu na gornji levi ugao te komponente.
 
 

Primer 5 Kreirati aplet koji reaguje na klik miša ispisivanjem trenutnih koordinata kursora, a na dalje pomeranje miša reaguje iscrtavanjem linija i ispisivanjem krajnjih koordinata naodgovarajućoj poziciji.
 
 

import java.awt.*;

import java.applet.*;    //uobicajeno uvozenje

  public class KontrolaMisa extends Applet {

int mx, my, mx1, my1;  /*stari i novi polozaji kustora zadati preko x,y koordinata*/

      boolean crtaj=false;

      public boolean mouseDown(Event e, int x, int y)

      {

            mx=x; my=y;  /*x, y se dodeljuju mx, my kako bi bile dostupne za paint() */

          repaint();

         return (true);

      }

public boolean mouseDrag(Event e, int x, int y)

      {

            mx1=x; my1=y;  /*x, y se dodeljuju novim pozicijama kursora mx1, my1 */

          crtaj=true;  /*ukljucuje se crtanje */   repaint();

         return (true);

      }

 public void paint(Graphics g)

     {  g.drawString(mx+","+my, mx, my);

if (crtaj==true)
 { g.drawLine(mx,my,mx1,my1);  /*linija se prostire od pozicije u mouseDown do tekuce pozicije*/

   g.drawString(mx1+","+my1, mx1,my1);

 }

   crtaj=false; /* nakon akcije iskljucuje se crtaj */

}
}

 U apletu postoji boolean  promenljiva crtaj, tako da metod paint se izvršava ako su urađeni i klik i pomeranje mišea, jer linija se crta samo ako je kliknuto mišem. Koordinate na vrhu linije su upisane sa mouseDown().  Linija i donje koordinate su dodate pomoću mouseDrag().