import java.awt.*; import java.awt.event.*; public class IkkunaKuuntelijaSisainenTesti { public static void main(String[] args) { new Ikkuna2(); } } //------------------------------------------------------ // Luodaan Listener-olion ja rekisteröi kyseisen olion // jolloin se saa tiedon, jos jokin kuunneltava tapahtuma // ilmenee. class Ikkuna2 extends Frame { public Ikkuna2(){ //Luodaan kehys ja asetetaan sille koko ja otsikko this.setSize(300,200); this.setTitle("Ikkunatesti/Sisäinen luokka"); //Luodaan ja rekisteröidään Listener-olio, jolloin ikkuna on tapahtuman lähde this.addWindowListener(new IkkunaKuuntelija()); // Asetetaan ikkuna näkyville this.show(); } // Sisäinen Kuuntelija-luokka class IkkunaKuuntelija implements WindowListener { public void windowClosed(WindowEvent we) { System.out.println("Viesti: Ikkuna on suljettu (close) mutta edelleen muistissa"); } public void windowIconified(WindowEvent we) { System.out.println("Viesti: Ikkunan pienennys ikoniksi (iconify)"); } public void windowDeiconified(WindowEvent we){ System.out.println("Viesti: ikoni takaisin ikkunaksi (deiconify)"); } public void windowOpened(WindowEvent e){ System.out.println("Viesti: Ikkuna avattiin (open)"); } public void windowClosing(WindowEvent we) { System.out.println("Viesti: Ikkuna suljetaan ja tuhotaan muistista (closing)"); dispose(); // Poistaa ikkunan muistista System.exit(0); } public void windowActivated(WindowEvent e){ System.out.println("Viesti: Ikkuna aktivoituu (Activate)"); } public void windowDeactivated(WindowEvent e){ System.out.println("Viesti: Ikkuna ei aktiiviseksi (Deactivate)"); } } } //------------------------------------------------------ // Toteutetaan WindowListener-rajapinta, joka vaatii kaikkien // rajapinnan metodien uudelleen toteutuksen. // Tulostaa viestin, jos kyseinen tapahtuma havaitaan.