Het inlezen van een getal |
In dit voorbeeld wordt een getal ingelezen vanaf het toetsenbord en vervolgens afgedrukt op de statusbalk van de browser.
// Invoer.java import java.awt.*; // voor TextField en Label import java.awt.event.*; // voor ActionEvent import java.applet.Applet; // voor Applet public class Invoer extends Applet implements ActionListener {
Label vraag;
TextField invoer;
public void init() {
// Stap1 creëeren
vraag = new Label( "Type het getal in en druk op Enter " );
invoer = new TextField( 10 );
// Stap2 Aanmelden bij de layoutmanager
add( vraag );
add( invoer );
// Stap3 Koppelen van de eventListener
invoer.addActionListener(this);
}
// Stap4 Afhandelen van het ActionEvent
public void actionPerformed( ActionEvent e) {
// Stap5 lezen van de gegevens
String tekst = invoer.getText();
// Stap6 converteren van String naar integer
int getal= Integer.parseInt(tekst);
// Stap7 toon het resultaat
showStatus( "Het getal is " + getal );
}
}
|
In dit voorbeeld kunnen we de volgende deeltaken onderscheiden:
Stap1 Creëer een Label
en een TextField
Voor het weergeven van de vraag wordt een Label gebruikt. Een
Label is een standaard component.
In een grafische omgeving worden ingetypte getallen niet zomaar
naar het beeldscherm gestuurd. Op het beeldscherm moet een
invoerveld aanwezig zijn waar deze getallen terecht kunnen komen.
In Java heet zo'n invoerveld een TextField.
De init methode van de applet wordt door de browser aangeroepen voordat de applet op het beeldscherm zichtbaar wordt. Dit is dus een geschikte plaats om variabelen te initialiseren en geheugen aan te vragen voor de gebruikte klassen.
vraag = new Label( "Type het getal in en druk op Enter " ); invoer = new TextField( 10 );
Stap2 Aanmelden bij de
layoutManager
De zichtbare componenten moeten een bepaalde plaats krijgen op
het scherm. Deze klus kan het beste overgelaten worden aan de
FlowLayout manager, die in de applet is ingebouwd. De componenten
worden bij deze manager aangemeld met de methode add. De
manager plaats de elementen op volgorde van binnenkomst. De
componenten worden achter elkaar in de applet geplaatst. Mocht de
applet te smal zijn, dan worden de componenten onder elkaar
geplaatst en vervolgens gecentreerd. Dit geeft bij tijd en wijle
een afgrijselijke layout, maar deze FlowLayout is het
eenvoudigste in het gebruikt
add( vraag ); add( invoerVeld );
Stap3 Koppelen van de
eventListener
Als na het intypen van de tekst op de Enter toets wordt gedrukt
wordt er een ActionEvent gegenereerd. Dit event moet afgehandeld
worden. Hiervoor wordt de TextField (de bron van het event)
gekoppeld aan een actionListener(het eindpunt van het event). In
dit geval is de applet (Invoer) ook de actionListener. Bij de
klasseaanhef staat implement ActionListener. Dit betekent dat de
gegenereerde actionEvent wordt doorgestuurd naar de
actionPerformed methode van de applet. Dus moet deze applet deze
methode actionPerformed bevatten. De koppeling tussen de
eventbron (TextField) en eventListener( deze Hallo applet) komt
tot stand met de zin:
invoer.addActionListener(this);
Stap4 Afhandelen van de
ActionEvent
De actionPerformed methode wordt aangeroepen als er gebeurtenis
(event) heeft plaats gevonden. Gebeurtenissen zijn o.a. de
gebruiker heeft een knop ingedrukt of de gebruiker heeft de Enter
toets ingedrukt in een TextField, enz.
Stap5 Lees de ingevoerde
gegevens uit het TextField
Zoals de naam al aangeeft kan met een TextField alleen tekst
worden ingevoerd. De tekst wordt opgevraagd met methode
invoer.getText();
Stap6 converteer het van
een string naar een integer
De string wordt doorgegeven aan de parseInt, die
een string omzet naar een getal. De uitvoer van parseInt wordt
toegekend aan de variabele getal. De methode parseInt is
onderdeel van de klasse Integer.
int getal= Integer.parseInt(tekst);
Stap7 Druk het getal af
op de statusbalk
Voor het uitvoeren van tekst naar de statusbalk is de methode showStatus
beschikbaar. showStatus is een methode, die een tekst in de
statusbalk van de browser afdrukt. In dit geval willen we een
tekst gevolgd door de waarde van het getal afdrukken. Met het +
teken worden twee tekstStrings samengevoegd tot één
tekstString. Het getal wordt impliciet geconverteerd naar een
String.
showStatus( "Het getal is " + getal );