JAVA Deel 3 (We gaan tekenen!)
1. Beginwoord
2. Voorbereiding
3. De eigenlijke Applet
top
1. Beginwoord
Deze keer gaan we weer een applet maken.
Alleen iets uitgebreider als de vorige.
De bedoeling van ons programma is dat de persoon met zijn muis ingedrukt over onze applet kan gaan en zo zwarte lijntjes trekt.
Klinkt leuk he, en het is eigenlijk niet zo moeilijk.
Ik ga eerst elk stapje bespreken en dan volgt de gehele applet.
Wat je al moet kennen?
De 2 vorige tutorials!
2. Voorbereiding
Eerst gaan we eens zien hoe we dit zouden maken.
Welke stappen er nodig zijn.
We moeten java.applet.Applet inladen zoals de vorige tutorial maken, en de public class maken.
Laten we dit al doen.
import java.applet.Applet;
public class tekenenapplet extends Applet{
}
|
Hier hoort eigenlijk geen uitleg bij als je de 2 vorige tutorials hebt gelezen.
Ik heb mijn bestand tekenenapplet genoemd, dus zo ook mijn public class.
Nu de volgende stap.
Het html document.
Even moeilijk (makkelijk) als bij een gewone applet.
<html>
<body>
<APPLET CODE="tekenenapplet.class" height="400" width="400"></APPLET>
</body>
</html>
|
Mijn applet noemt tekenenapplet, dus deze laad ik in.
Zoals je kan zien heb ik nogal grootte formaten gebruikt (vergeleken met de eerste applet), dit is omdat ik lekker groot wil tekenen.
Nu komt het "moeilijke" gedeelte.
Even ter informatie: er zijn 6 'mousehandlings' in JAVA.
mouseEnter, mouseExit, mouseMove, mouseDrag, MouseUp, mouseDown.
We hebben ze niet alle zes nodig, maar dit leek me even handig om mee te delen, voor als je iets anders wilt maken.
Wat hebben we wel nodig:
We moeten weten wanneer iemand op de muis heeft geklikt... dat kunnen we zien met mouseDown.
En we moeten weten wanneer iemand zijn muis ingeklikt verplaats.
Dit is niet mouseMove (want dan is het niet ingeklikt) maar mouseDrag.
Het aanmaken van de boolean mouseDown en mouseDrag is niet zo moeilijk, het ziet er als volgt uit:
public boolean mouseDown(Event e, int x, int y){
}
public boolean mouseDrag(Event e, int x, int y){
}
|
Even wat meer uitleg misschien.
Via het public statement maken we de functie (of beter gezegd boolean) mouseDown (of mouseDrag) aan.
We hebben variabelen x en y, deze twee gaan we later in ons programma gebruiken.
Nu even een kleine samenvating van wat we hebben.
import java.applet.Applet;
import java.awt.Event;
import java.awt.Graphics;
//deze twee laatste zijn nodig voor de eventhandling (event) en voor iets te laten weer geven, te tekenen (graphics)
public class tekenenapplet extends Applet{
//straks maken we hier 2 variabelen aan die de x en y waarde bewaren
public boolean mouseDown(Event e, int x, int y){
//hier moeten we de variabelen x en y opslaan en terugsturen zodat we weten waar de muis op dat moment is
}
public boolean mouseDrag(Event e, int x, int y){
//hier gaan we alles tekenen
}
}
|
Nu gaan we die 2 variabelen aanmaken waar de x en y waardes worden opgeslagen.
int y_waarde;
int x_waarde;
|
Niet zo ingewikkeld he? Gewoon declareren.
En nu gaat het echte werk beginnen, we gaan de x en y waardes opslaan.
public boolean mouseDown(Event e, int x, int y){
y_waarde = y;
x_waarde = x;
return true;
}
|
We gaan weer eens naar de boolean mouseDown.
In de declaratie staan 2 variabelen ineens gedeclareerd, x en y.
Dit kan gewoon niet beter, gewoon de waardes in "externe" variabelen opslaan en meer moeten we niet weten.
Een boolean heeft ook altijd een waarde. Gewoon even true terugsturen en de functie kan afgesloten worden.
Nu heb je je gegevens die je nodig hebt voor het tekenen, laten we nu gaan tekenen?
Ik ga eerst een beta laten zien, als je dit gaat gebruiken ga je 1 stipje kunnen tekenen.
We gaan de x en y waardes bekijken en deze rechtstreeks tekenen.
public boolean mouseDrag(Event e, int x, int y){
Graphics g = getGraphics();
g.drawLine(xpoint, ypoint, x, y);
return true;
}
|
Wat doen we hier?
We laden eerst de functie getGraphics() in, zodat we "kunnen" tekenen.
Dan gaan we een lijn tekenen.
In de vorige applet gebruikten we drawString, maar tja, we willen geen woorden tekenen he!
Dus een lijntje, en dan weer een waarde weergeven.
Zoals ik eerder zei, dit levert hoogstwaarschijnlijk een puntje op met een beetje geluk.
Hoe kunnen we nu een lijn maken?
We gaan eens kijken.
public boolean mouseDrag(Event e, int x, int y){
Graphics g = getGraphics();
g.drawLine(x_waarde, y_waarde, x, y);
y_waarde = y;
x_waarde = x;
return true;
}
|
Bij het laatste wat er is bij gekomen, stel je steeds de variabele x_waarde gelijk aan de constante x en de variabele y_waarde aan de constante y.
Zodat je verder kan tekenen, en zodat je punten bewaard blijven.
Dit is het eigenlijk.
top
1. De eigenlijke applet
import java.applet.Applet;
import java.awt.Event;
import java.awt.Graphics;
public class tekenenapplet extends Applet{
int y_waarde;
int x_waarde;
public boolean mouseDown(Event e, int x, int y){
y_waarde = y;
x_waarde = x;
return true;
}
public boolean mouseDrag(Event e, int x, int y){
Graphics g = getGraphics();
g.drawLine(x_waarde, y_waarde, x, y);
y_waarde = y;
x_waarde = x;
return true;
}
}
|
Compileren met javac tekenenapplet.java en dan je .htm bestandje openen.
Heb je nog vragen? Stel deze dan op het forum.
Enkele toepassingen met JAVA zijn bv. JSP, meer info daarover: JSP Tutorials
top
|