Na het bestuderen van dit hoofdstuk wordt van je verwacht dat je:
Windows is een grafische interface: Afbeeldingen of opgemaakte tekst op het scherm tonen of afdrukken met de printer op papier wordt door Windows afgehandeld. Een programmeur hoeft geen hardware te benaderen om afbeeldingen af te drukken. Een in Windows geschreven programma kan elke videokaart of printer gebruiken, waarvoor in Windows een stuurprogramma beschikbaar is.
Maar Windows is meer: Windows is ook een besturingssysteem dat gebeurtenissen (events) afhandelt. In objectgeoriënteerd programmeren is een object een combinatie van code en gegevens. Een venster dat je op het scherm ziet, is een object. Elke knop, radiobutton, invoervak, label en noem alle soorten objecten maar op die op het scherm kunnen verschijnen, zijn vensters en werken in principe op dezelfde manier, omdat ze afgeleid zijn van het basisobject venster.
Als een gebruiker met de muis op een knop klikt, stuurt Windows een
gebeurtenis naar de methode die bij die knop hoort: In dit geval dat
er op de knop is geklikt. Een andere gebeurtenis had dubbelklikken
kunnen zijn. Windows houdt intern bij welke methode bij welk venster
hoort. Je kunt ook zeggen: Windows roept de methode aan die bij die
knop hoort. Dit wordt in vaktermen event-handling genoemd.
De methode staat in het intern geheugen van de computer. Een aantal
eigenschappen zijn standaard: Een venster is altijd rechthoekig en
een knop zal zich indrukken zodra een gebruiker erop klikt. Een
actief venster zal een titelbalk met blauwe achtergrond laten zien.
Een programmeur moet twee dingen doen:
Hoe dat praktisch in zijn werk gaat, lees je in het volgende hoofdstuk.
Je kunt in de methode init() van je applet de afmetingen
van het scherm bepalen met de methode setSize(int width,
int height).
Tussen de haakjes wordt aangegeven dat deze
methode twee argumenten (of parameters) van het type int verwacht.
Je kunt de methode als volgt "aanroepen":
import java.awt.*;
import java.applet.*;
public class Show extends Applet {
public void init() {
setSize(400, 300);
}
public void paint(Graphics g) {
g.drawString("Welcome to Java!!", 50, 60 );
}
}
Kun je in de Java API (zie web-links) deze methode ergens vinden?
In welke klasse wordt deze methode gedefinieerd?
Dezelfde klasse heeft een tweede methode met dezelfde naam. Wat is het verschil?
De methode wordt zonder tussenkomst van een instantie van een andere
klasse aangeroepen in de klasse Show die een uitbreiding van Applet is. Je had ook mogen schrijven
this.setSize(400, 300); om aan te geven dat het een methode
van de eigen klasse is. In de Java API zie je bij de klasse Applet
onder "Method Summary" alle methoden van de klasse
opgesomd. De methode setSize() staat daar niet tussen. In het
onderdeel "Methods inherited from class
java.awt.Component" wordt de methode wél genoemd.
Aangezien Applet een uitbreiding is van onder meer Component, erft zij alle eigenschappen,
waaronder methoden.
Een klasse kan verschillende methoden bevatten met dezelfde naam, maar met verschillende argumenten. De klasse Component heeft nog een methode setSize die als argument een instantie van het type Dimension accepteert. Dit noemen we "overloading".
Dimension dim = new Dimension(400, 300); this.setSize(dim);