import java.awt.*; import java.awt.event.*; // Tämä luokka vastaa jotakin ohjelmaa. public class Application { // Tässä muutamia vakioita, joita käytetään argumentteina doCommand()-metodile. static final int save = 1; static final int load = 2; static final int quit = 3; // Tämä metodi reitittää kaikki komennot eteenpäin ohjelmalle. // Runko jätetty pois. void doCommand(int command) { } // Muut ohjelman metodit jätetty pois... } // Tässä luokassa on määritelty ohjelman käyttöliittymä. class GUI extends Frame { Application app; // Sisältää viittauksen Application-olioon // Konstruktori ja muut metodit jätetty pois... // Tämä on apumetodi, jolla luodaan tietyn nimisiä valikon valintoja, // joihin liittyy tietty pikanäppäin sekä komento. “command”-argumentti // määritellään final-tyyppiseksi, jotta paikallisessa ActionListener- // luokassa voisi viitata siihen. MenuItem createMenuItem(String label, char shortcut, final int command) { // Ensin luodaan MenuItem-olio. MenuItem item = new MenuItem(label, new MenuShortcut(shortcut)); // Sitten määritellään paikallinen luokka, joka kuuntelee tapahtumia. class MenuItemListener implements ActionListener { // Huomaa, että tässä metodissa käytetään omistajaluokassa määriteltyä // app-kenttää sekä final-tyyppistä command-argumenttia tämän luokan // omistavasta lohkosta. public void actionPerformed(ActionEvent e) { app.doCommand(command); } } // Seuraavaksi luodaan paikallisen luokan tyyppinen olio, joka kuuntelee // tämän tietyn MenuItem-olion tuottamia tapahtumia. ActionListener listener = new MenuItemListener(); // Rekisteröidään tapahtumankuuntelija kuuntelemaan MenuItem-olion // tuottamia tapahtumia. item.addActionListener(listener); // Palautetaan valikon valinta ja kutsuja voi lisätä sen valikkoon. return item; } }