Verwendung von WindowListener und ComponentListener

Im folgenden werden wir ein Fenster in Java erstellen welches wir einen Listener zuweisen. Bei einem Aufruf einer Listenermethode wird eine entsprechende Konsolenausgabe angezeigt. Zur Umsetzung sind folgende Schritte notwendig:

  1. Neues Projekt erstellen: de.michel.window.WindowListener
  2. Paket erstellen: window
  3. Klasse Win.java erstellen
  4. Klasse WinListener.java erstellen

Quellcode

Win.java
Über die Methoden addWindowListener() sowie addComponentListener() fügen wir dem Fenster die Listener hinzu.

package window;

import javax.swing.JFrame;

public class Win 
{
	public Win()
	{
		//neues Fenster erzeugen
		JFrame f = new JFrame();
		
		//Listener-Objekt erzeugen
		WinListener winListener = new WinListener();
		
		//Listener-Objekt bei Fenster registrieren
		f.addWindowListener(winListener);
		f.addComponentListener(winListener);
		
		//Programm beenden, wenn Fenster geschlossen wird.
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//Größe einstellen
		f.setSize(500, 300);
		
		//Fenster verschieben
		f.setLocation(300, 400);

		//Fenster sichtbar machen
		f.setVisible(true);
	}

	public static void main(String[] args) 
	{	
		//Erzeugen eines Fenster-Objektes
		new Win();
	}
}

[ad#co-3]

WinListener.java
Werden die Schnittstellen WindowListener und ComponentListener einer neu erstellten Klasse implementiert, müssen anschließend die entsprechenden Funktionen hinzugefügt werden.

package window;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class WinListener implements WindowListener, ComponentListener{

	public void windowActivated(WindowEvent arg0) 
	{
		System.out.println("Fenster wurde aktiviert");
	}

	public void windowClosed(WindowEvent arg0) 
	{
		System.out.println("Fenster wurde durch das Programm geschlossen");
	}

	public void windowClosing(WindowEvent arg0) 
	{
		System.out.println("Fenster wurde durch den Benutzer geschlossen");
	}

	public void windowDeactivated(WindowEvent arg0) 
	{
		System.out.println("Fenster wurde deaktiviert");
	}

	public void windowDeiconified(WindowEvent arg0) 
	{
		System.out.println("Fenster wurde wiederhergestellt");
	}

	public void windowIconified(WindowEvent arg0) 
	{
		System.out.println("Fenster wurde minimiert");
	}

	public void windowOpened(WindowEvent arg0) 
	{
		System.out.println("Fenster wurde geöffnet");
	}

	public void componentHidden(ComponentEvent arg0) 
	{
		System.out.println("Fenster wurde verborgen");
	}

	public void componentMoved(ComponentEvent arg0) 
	{
		System.out.println("Fenster wurde verschoben");
	}

	public void componentResized(ComponentEvent arg0) 
	{
		System.out.println("Fenster wurde vergrößert/verkleinert");
	}

	public void componentShown(ComponentEvent arg0) 
	{
		System.out.println("Fenster wurde hervorgeholt");
	}
}

[ad#co-3]

Ergebnis

Beim Ausführen der Java Applikation beobachten wir nun die Konsolenausgabe. In meinem Fall erscheint folgendes Ergebnis:

Fenster wurde vergrößert/verkleinert
Fenster wurde verschoben
Fenster wurde hervorgeholt
Fenster wurde geöffnet
Fenster wurde vergrößert/verkleinert
Fenster wurde vergrößert/verkleinert
Fenster wurde vergrößert/verkleinert
Fenster wurde aktiviert
Fenster wurde verschoben
Fenster wurde verschoben
Fenster wurde vergrößert/verkleinert
Fenster wurde verschoben
Fenster wurde verschoben
Fenster wurde vergrößert/verkleinert
Fenster wurde verschoben
Fenster wurde vergrößert/verkleinert
Fenster wurde verschoben
Fenster wurde verschoben
Fenster wurde durch den Benutzer geschlossen

Das Ergebnis varriert natürlich je nach Benutzung des erzeugten Fenstern. In der vorliegen Konsolenausgabe wurde das Fenster erzeugt, vergrößert, verkleinert, verschoben und geschlossen.