Knoppen voor optellen en aftrekken

Keuze

In dit voorbeeld wordt een getal ingelezen. Door het drukken op één van de knoppen wordt het getal met verhoogd of verlaagd.

Applet

Programmacode

// 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));
    }
}

Uitleg

Analyse

Deeltaken
Alloceren en toevoegen van de compontenten: (twee knoppen en het invoerveld)
Een afhandelingsmethode, die kijkt welke knop is ingedrukt en daarop actie onderneemt

Ontwerp

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.

copyright © 1998 Little World