Tapahtumankuuntelijaolio voidaan liittää monella erilaisella tavalla käyttöliittymäkomponenttiin. Alla on vain muutama esimerkki.
import javax.swing.*; import java.awt.event.*; import java.awt.font.*; // vain fonttia varten import java.awt.*; // " public class HiiriTuliJaMeni1 extends JFrame implements MouseListener { private JTextArea alue = new JTextArea (1, 11); private int puremia = 0; public HiiriTuliJaMeni1() { alue.setEditable(false); getContentPane().add ("Center", alue); alue.setFont(new Font("Serif", Font.BOLD, 20)); alue.setText(" Hiirtä ei ole näkynyt."); alue.addMouseListener(this); // luokka ITSE toteuttaa // kuuntelijan } public void mouseEntered(MouseEvent tapahtuma) { alue.setText(" Hiiri tuli!"); } public void mouseExited(MouseEvent tapahtuma) { alue.setText(" Hiiri meni!"); } public void mouseClicked(MouseEvent tapahtuma) { ++puremia; alue.setText(" Hiiri puri! ("+puremia+". kerta)"); } // KAIKKI luvatut metodit on toteutettava (edes tyhjinä): public void mousePressed(MouseEvent tapahtuma) { } public void mouseReleased(MouseEvent tapahtuma) { } public static void main(String[] args) { HiiriTuliJaMeni1 ikkuna = new HiiriTuliJaMeni1(); ikkuna.setTitle("Hiirielämää"); ikkuna.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ikkuna.pack(); ikkuna.setVisible(true); } }
import javax.swing.*; import java.awt.event.*; import java.awt.font.*; // vain fonttia varten import java.awt.*; // " public class HiiriTuliJaMeni2 extends JFrame { private JTextArea alue = new JTextArea (1, 11); private int puremia = 0; public HiiriTuliJaMeni2() { alue.setEditable(false); getContentPane().add ("Center", alue); alue.setFont(new Font("Serif", Font.BOLD, 20)); alue.setText(" Hiirtä ei ole näkynyt."); alue.addMouseListener( // nimetön sisäluokka MouseAdapterin new MouseAdapter() { // aliluokkana (vain tarpeell. toteut.) public void mouseEntered(MouseEvent tapahtuma) { alue.setText(" Hiiri tuli!"); } public void mouseExited(MouseEvent tapahtuma) { alue.setText(" Hiiri meni!"); } public void mouseClicked(MouseEvent tapahtuma) { ++puremia; alue.setText(" Hiiri puri! ("+puremia+". kerta)"); } } ); } public static void main(String[] args) { HiiriTuliJaMeni2 ikkuna = new HiiriTuliJaMeni2(); ikkuna.setTitle("Hiirielämää"); ikkuna.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ikkuna.pack(); ikkuna.setVisible(true); } }Toki kuuntelija voitaisiin ohjelmoida myös nimettömänä luokkana, joka suoraan toteuttaa kuuntelijarajapintaluokan (HiiriTuliJaMeni2b.java), mutta tässä ratkaisussa tyhjiksi jäävätkin metodit on toteutettava:
alue.addMouseListener( // nimetön sisäluokka MouseListenerin new MouseListener() { // toteuttajana public void mouseEntered(MouseEvent tapahtuma) { alue.setText(" Hiiri tuli!"); } public void mouseExited(MouseEvent tapahtuma) { alue.setText(" Hiiri meni!"); } public void mouseClicked(MouseEvent tapahtuma) { ++puremia; alue.setText(" Hiiri puri! ("+puremia+". kerta)"); } public void mousePressed(MouseEvent tapahtuma) { } public void mouseReleased(MouseEvent tapahtuma) { } } );Jos kaikki kuuntelijan metodit joka tapauksessa ohjelmoidaan ei-tyhjiksi algoritmeiksi, rajapintaluokan käyttö adapterin sijaan on perusteltua.
(Kuten edellisessä esimerkissä, myös tässä voitaisiin rajapintaluokka toteuttaa itsekin.)
import javax.swing.*; import java.awt.event.*; import java.awt.font.*; // vain fonttia varten import java.awt.*; // " public class HiiriTuliJaMeni3 extends JFrame { private JTextArea alue = new JTextArea (1, 11); private int puremia = 0; public HiiriTuliJaMeni3() { alue.setEditable(false); getContentPane().add ("Center", alue); alue.setFont(new Font("Serif", Font.BOLD, 20)); alue.setText(" Hiirtä ei ole näkynyt."); alue.addMouseListener(new HiirenHuomaaja()); } private class HiirenHuomaaja extends MouseAdapter { public void mouseEntered(MouseEvent tapahtuma) { alue.setText(" Hiiri tuli!"); } public void mouseExited(MouseEvent tapahtuma) { alue.setText(" Hiiri meni!"); } public void mouseClicked(MouseEvent tapahtuma) { ++puremia; alue.setText(" Hiiri puri! ("+puremia+". kerta)"); } } public static void main(String[] args) { HiiriTuliJaMeni3 ikkuna = new HiiriTuliJaMeni3(); ikkuna.setTitle("Hiirielämää"); ikkuna.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ikkuna.pack(); ikkuna.setVisible(true); } }