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