\(\renewcommand{\vec}[1]{\mathbf{#1}} \DeclareMathOperator*{\sijoitus}{\Big/} \newcommand{\eval}[2]{\sijoitus_{\kern-0.7em#1}^{\kern0.7em#2}\!} \)

5.4.4 Kuuntelijan lisääminen

Jotta Java-ohjelma osaa reagoida käyttäjän toimenpiteisiin, pitää ohjelmaan lisätä tarvittavat kuuntelijat (engl. listener), jotka huomaavat, jos käyttäjä esimerkiksi painaa painiketta tai kirjoittaa tekstiä ja tekevät halutun toiminnon.

Ikkuna-luokassa voi syöttää tekstiä ja klikata painiketta. Klikkauksia valvomaan luodaan uusi luokka Painikekuuntelija, joka toteuttaa (implements) ActionListener-rajapinnan. Se pakottaa ohjelmoijan lisäämään luokkaan actionPerformed-metodin, joka suoritetaan aina, kun painiketta painetaan.

Painikekuuntelija-luokan lisäksi Ikkuna-luokan painike-oliolle pitää lisätä tieto kuuntelijasta. Tämä tehdään lisäämällä vaikkapa noin riville 50 (painikkeen luomisen jälkeen) seuraava koodi:

// Lisätään painikkeelle kuuntelija: painike.addActionListener(new Painikekuuntelija(this));

Koodissa oleva hassu this-avainsana viittaa Ikkuna-luokan olioon ja luo yhteyden Ikkuna- ja Painikekuuntelija -luokkien välille.

Painikekuuntelija-luokan mahdollinen koodi on alla:
public class Painikekuuntelija implements ActionListener { private Ikkuna ikkuna; public Painikekuuntelija(Ikkuna ikkuna){ this.ikkuna = ikkuna; } // Tätä metodia kutsutaan, kun painiketta klikataan. @Override public void actionPerformed(ActionEvent arg0) { String kirjoitus = this.ikkuna.getTekstikentta().getText(); kirjoitus = "\n"+this.ikkuna.getTekija()+" kirjoitti: "+kirjoitus; this.ikkuna.getTekstiruutu().append(kirjoitus); } }