13. Tekenen in een applet (2)In hoofdstuk 2 van deze cursus zijn we al een aantal figuren tegengekomen die we met Java kunnen tekenen:
Als we een cirkel willen tekenen, moeten h en b natuurlijk gelijk zijn. In het voorbeeld noemen we die d (diameter). We hebben gezien dat we rechthoeken en ellipsen kunnen opvullen door fill te gebruiken in plaats van draw, dus zo: g.fillRect (x, y, b, h);
Tekenen in kleurWi je met rood gaan tekenen, dan kun je die kleur krijgen met: g.setColor (Color.red);
De klasse Color bevat 13 voorgedefinieerde kleuren, namelijk:
Zo kunnen we bijvoorbeeld de volgende gekleurde figuren maken:
Verder kun je de hoeken van een rechthoek afronden met de functies drawRoundRect en fillRoundRect. Zoals hieronder is te zien, komen er twee argumenten bij voor de mate van ronding.
Figuren met 'diepte'Java kan ook rechthoeken tekenen waarvan de randen relief suggereren. Daarvoor bestaat de methode fill3DRect. Deze methode heeft een vijfde argument van het type boolean, waarmee we kunnen kiezen voor een donkere rechthoek met een lichte rand of andersom. Beide varianten zie je hieronder. Ter vergelijking is er rechts een 'normale' rechthoek bij gezet.
Zelf kleuren definiërenKleuren kun je ook zelf definiëren. Dat kan als volgt: int rood=60,
groen=10, blauw=25;
De variabelen rood, groen en blauw moeten waarden hebben van 0 tot en met 255. We kunnen een applet maken met drie tekstvakken om waarden voor rood, groen en blauw in te voeren. Om te voorkomen dat we van alles in drievoud moeten intypen, zullen we diverse objecten als arrays van drie elementen (0-2) uitvoeren.
De zelfgemaakte methode totByte zet de string (die in het tekstvak is ingetypt) om in een getal. Als dit geen getal van 0-255 oplevert, wordt -1 afgegeven. En zo ziet de applet eruit:
Onregelmatige figurenIn Java kun je ook figuren maken die met ellipsen, rechthoeken en dergelijke moeilijk te tekenen zijn. Stel dat we een pijl willen tekenen, zoals hier afgebeeld: Om deze figuur te tekenen, zouden we 12 punten met elkaar moeten verbinden. We kunnen gebruik maken van de methode drawPolygon. Deze vereist drie argumenten; een array van x-coördinaten en een van y-coördinaten. Het derde argument is de lengte van de arrays (die natuurlijk even groot zijn). De methode paint om deze pijl te tekenen ziet er zo uit:
Naast de methode drawPolygon is er ook fillPoygon, die natuurlijk dit soort figuren oplevert:
Argumenten meegeven aan een appletJe kunt aan een applet argumenten meegeven vanuit het HTML-bestand, als je dat wilt. De meeste figuren op deze pagina zijn getekend door de applet FiguurDemo.class, die telkens een ander argument meekrijgt. In het HTML-bestand ziet dat er bijvoorbeeld voor de gele rechthoek zo uit:
Bij param name moet je de naam opgeven waaronder het meegegeven argument binnen de applet kan worden binnengehaald. Let erop dat je als argument alleen strings kunt meegeven, in dit geval de string "5". Binnen de applet wordt (meestal in de methode init) de string binnengehaald. In de applet FiguurDemo.java gebeurt dat aldus: String tmp = getParameter ("figuur"); Hierna bevat de String tmp de waarde "5" (of een andere waarde die in het html-bestand aan "figuur" is meegegeven). Als we deze string in een getal willen omzetten, zou dat bijvoorbeeld zo kunnen: int figuur = Integer.parseInt(tmp); Laten we eens een wat groter programma bekijken waarin het meegeven van argumenten wordt gebruikt. We gaan de achtergrondkleur, de letterkleur en de lettergrootte als argumenten meegeven. Ons HTML-bestand ziet er zo uit:
In de applet worden al deze waarden binnengehaald. Om te voorkomen dat de applet stukloopt als verkeerde argumenten worden meegegeven, heb ik wat foutcontroles ingebouwd.
De twee gebruikte foutcontroles zijn:
Opdracht 13.1 Schrijf een applet met twee tekstvakken en een knop. Na invoeren van de lengte en de breedte en klikken op de knop wordt een rechthoek met de gewenste lengte en breedte getekend. Opdracht 13.2 Dezelfde applet als 13.1. Zorg dat de applet een melding geeft als de ingevoerde strings geen positieve hele getallen kunnen zijn of als de getallen te groot zijn om in het appletvenster te passen (ongeacht de grootte die in het html-bestand is meegegeven. Opdracht 13.3 Laat een rechthoek tekenen waarvan lengte, breedte en opvulkleur bepaald worden door argumenten uit het html-bestand. Zorg dat de applet meldingen geeft als de meegegeven argumenten onjuist zijn. Ook moet vermeld worden als de meegegeven lengte en/of breedte negatief of te groot zijn om in het appletvenster te passen. (c) 2003-2008, Thomas J.H.Luif |
||||||||||||||||||||||||||||||||||||||