Knoppen voor optellen en aftrekken |
In dit voorbeeld wordt een getal ingelezen. Door het drukken op één van de knoppen wordt het getal met verhoogd of verlaagd.
// een spinnerknop programma Knop.java
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Knop extends Applet implements ActionListener {
TextField invoer;
Button plus, min;
int getal; // het ingelezen getal
// Plaats de grafische componenten
public void init() {
plus = new Button("+");
min = new Button("-");
invoer = new TextField( 5 );
add( plus );
add( invoer);
add( min);
plus.addActionListener(this);
invoer.addActionListener(this);
min.addActionListener(this);
}
// Verwerk de events
public void actionPerformed ( ActionEvent e) {
// Stap1: Als plus-knop dan verhoog getal met 1
if (e.getSource() == plus) {
// Stap2: increment
getal++;
}
// Stap3: Als min-knop dan verlaag getal met 1
if (e.getSource() == min) {
// Stap4: decrement
getal--;
}
// Stap5: Als enter-toets dan lees en converteer getal
if (e.getSource() == invoer)
getal= Integer.parseInt( invoer.getText() );
// Stap6: schrjf getal in het textField invoer
invoer.setText(Integer.toString(getal));
}
}
|
Deeltaken
Alloceren en toevoegen van de compontenten: (twee knoppen en het
invoerveld)
Een afhandelingsmethode, die kijkt welke knop is ingedrukt en
daarop actie onderneemt
De init methode
De componenten, de Buttons plus en min en het TextField
invoerVeld worden gealloceerd en aangemeld bij de layoutmanager.
Vervolgens worden alle drie de componenten gekoppeld aan de
ActionListener - de applet.
De actionPerformed methode
Hier wordt gekeken welke actie heeft plaatsgevonden volgens
het algoritme:
stap1: Als plus-knop is ingedrukt; is de vraag e.getSource() == plus waar (true). Hiermee is het if-statement waar. Waarna de volgende regel of blok (tussen accolades) wordt uitgevoerd. Als de voorwaarde in het if-statement niet waar is dan wordt de volgende regel of blok overgeslagen. Er wordt naar de programmaregel gesprongen volgend op het blok of eerste regel na het if-statement. Een volgende regel hoeft niet letterlijk een volgende regel te zijn. De volgende regel is het programmafragment tussen het einde van het if-statement en de eerst volgende puntkomma.
if (e.getSource() == plus) // als target is plus-knop dan ..
getal++; // verhoog getal met 1
stap2:
increment
Het verhogen van een integer met één heet increment, omdat deze
methode meestal standaard in de processor is ingebouwd is deze
methode ook in de hogere programmeertalen beschikbaar. Dit
betekent dat getal++ door de processor
sneller wordt uitgevoerd dan getal = getal + 1.
stap3: Als min-knop is ingedrukt dan wordt getal verlaagd met 1
if (e.getSource() == min) // als target is min-knop dan ..
getal--; // verlaag getal met 1
stap4 decrement
Het verlagen van een integer met één heet decrement (getal--) ,
hiervoor geldt hetzelfde als bij increment.
stap5: Als Enter toets is ingedrukt dan getal is gelijk aan de ingetypte waarde
if (e.getSource() == invoer) // als target is Enter dan ..
getal= Integer.parseInt( invoer.getText() );// converteer
stap6
Naar een textField kan een String geschreven worden met de
setText methode. Hier wordt expliciet de methode Integer.toString
aangeroepen om een integer naar een String om te zetten. Ook mag
invoer.setText("" + getal);
De truc die hier wordt toepast is de volgende. Het plus teken wordt geïnterpreteerd als samenvoegen van twee Strings als aan één van beide zijden van het plus-teken een String staat. Door een lege String te maken met "" wordt aan deze voorwaarde voldaan. De waarde aan de andere kant van het plus-teken wordt nu automatisch geconverteerd naar een String. door in dit geval automatisch de methode Integer.toString() aan te roepen.