import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class UsageOfInteger extends Applet {
    TextArea output=null;
    TextField input=null;
    public void init() {
        setLayout(new BorderLayout());
        output=new TextArea(5,10);
        output.setEditable(false);
        input=new TextField(10);
        input.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {

                // Nach einer Aktion auf dem TextField wird
                // in der Variablen isInteger vermerkt, ob
                // im TextFeld eine ganze Zahl steht. Die
                // eigentliche Berechnung findet in der Methode
                // checkForInteger(String) statt, die den Inhalt
                // des TextField als Übergabeparameter bekommt
                // und genau dann true als Ergebnis zurückliefert,
                // wenn dieser als ganze Zahl interpretiert werden
                // kann.
                boolean isInteger=checkForInteger(input.getText());
                output.append("Ergebnis von checkForInteger("+input.getText()+"): "+isInteger+"\n");
                input.setText("");
            }
        });
        add(input, BorderLayout.NORTH);
        add(output, BorderLayout.CENTER);
    }
    /**
     * @param   text    Zeichenkette, die darauf geprüft wird,
     *                  ob sie die Zeichenkettendarstellung
     *                  einer ganzen Zahl (int) ist.
     * @return  true    genau dann, wenn text die Zeichenkettendarstellung
     *                  einer ganzen Zahl ist
     */
    public boolean checkForInteger(String text) {

        // Referenzvariable i darf nicht erst im try-Block
        // deklariert werden, da sie ansonsten in der zweiten
        // output.append Zeile nicht mehr bekannt wäre
        Integer i=null;
        try {

            // Es wird versucht, die Referenzvariable i auf
            // ein neues Objekt der Klasse Integer zeigen zu
            // lassen, welches eine Integer-Repräsentation
            // der Zeichenkette text verwaltet.
            i=new Integer(text);
        } catch (NumberFormatException nfe) {

            // wird genau dann ausgeführt, wenn sich text nicht
            // als Zeichenkettendarstellung einer ganzzahligen
            // Variablen (int) erweist, und dementsprechend die
            // vom Konstruktor Integer(String) geworfene Exception
            // aufgefangen wurde
            output.append("Es wurde keine ganze Zahl eingegeben.\n");

            // return ist in diesem Beispiel erforderlich, da
            // die zweite output.append Zeile ansonsten auch
            // noch erreicht würde, was hier konkret keinen
            // Sinn macht
            return false;
        }
        output.append("Es wurde der Wert "+i.intValue()+" eingegeben\n");
        return true;
    }
}

