Tapahtumien kuuntelu voidaan ohjelmoida keskitetysti tai hajauttaa käyttöliittymäkomponentteihin. Alla on pari pientä esimerkkiä.
Object aiheuttaja = tapahtuma.getSource();(Keski.java)
import javax.swing.*; import java.awt.event.*; import java.awt.GridLayout; public class Keski extends JFrame implements ActionListener { // muuttujia ikkunan komponenteille: private JButton nappula1, nappula2, nappula3; private JTextArea tekstiAlue; private int painallusLkm = 0; public Keski() { // konstruktori setLayout(new GridLayout(2,3)); // luodaan komponenttioliot: nappula1 = new JButton("1"); nappula2 = new JButton("2"); nappula3 = new JButton("3"); tekstiAlue = new JTextArea(" Painele nappuloita!"); tekstiAlue.setEditable(false); // lisätään komponenttioliot ikkunaan: add(nappula1); add(nappula2); add(nappula3); add(tekstiAlue); // asetetaan kuuntelijat: nappula1.addActionListener(this); nappula2.addActionListener(this); nappula3.addActionListener(this); } // tapahtumien käsittely keskitetysti: public void actionPerformed(ActionEvent tapahtuma) { Object aiheuttaja = tapahtuma.getSource(); if (aiheuttaja == nappula1) { ++painallusLkm; tekstiAlue.setText(" Painoit nappulaa 1." + "\n Painalluksia "+ painallusLkm+ " kpl."); } else if (aiheuttaja == nappula2) { ++painallusLkm; tekstiAlue.setText(" Painoit nappulaa 2." + "\n Painalluksia "+ painallusLkm+ " kpl."); } else if (aiheuttaja == nappula3) { ++painallusLkm; tekstiAlue.setText(" Painoit nappulaa 3." + "\n Painalluksia "+ painallusLkm+ " kpl."); } } public static void main(String args[]) { Keski ikkuna = new Keski(); ikkuna.setSize(300, 100); ikkuna.setTitle("Keski.java"); ikkuna.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ikkuna.setVisible(true); } }
nappula1.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent tapahtuma) { ... } } );(Haja.java).
import javax.swing.*; import java.awt.event.*; import java.awt.GridLayout; public class Haja extends JFrame { // muuttujia ikkunan komponenteille: private JButton nappula1, nappula2, nappula3; private JTextArea tekstiAlue; private int painallusLkm = 0; public Haja() { // konstruktori setLayout(new GridLayout(2,3)); // luodaan komponenttioliot: nappula1 = new JButton("1"); nappula2 = new JButton("2"); nappula3 = new JButton("3"); tekstiAlue = new JTextArea(" Painele nappuloita!"); tekstiAlue.setEditable(false); // lisätään komponenttioliot ikkunaan: add(nappula1); add(nappula2); add(nappula3); add(tekstiAlue); // luodaan tapahtumiin reagoijat suoraan komponentteihin: nappula1.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent tapahtuma) { ++painallusLkm; tekstiAlue.setText(" Painoit nappulaa 1." + "\n Painalluksia "+ painallusLkm+ " kpl."); } } ); nappula2.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent tapahtuma) { ++painallusLkm; tekstiAlue.setText(" Painoit nappulaa 2." + "\n Painalluksia "+ painallusLkm+ " kpl."); } } ); nappula3.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent tapahtuma) { ++painallusLkm; tekstiAlue.setText(" Painoit nappulaa 3." + "\n Painalluksia "+ painallusLkm+ " kpl."); } } ); } public static void main(String args[]) { Haja ikkuna = new Haja(); ikkuna.setSize(300, 100); ikkuna.setTitle("Haja.java"); ikkuna.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ikkuna.setVisible(true); } }