awt
Determining when a frame is Iconized or Maximized or Opened or Closed
With this example we are going to see how to determine when a frame is Iconized or Maximized or Opened or Closed. This is very useful when you have many windows working on you application and you want to know or even inform the user about the state of each window. Additionally you might your application to behave differently depending on the state of some windows
Basically to determine the state of the windows, one should follow these steps:
- Create a new
WindowAdapterinstance. - Override
windowStateChangedmethod to customize the handling of that specific event. This method will be called after a window state has been changed. - Use
Frame.ICONIFIED, to determine when a window is iconified. - Override
windowOpenedmethod. This method is called after a window has been opened. - Override
windowClosingmethod. This method is called when the user clicks the close button - Override
windowClosedmethod. This method is called after a window is closed.
Let’s see the code snippet that follows:
package com.javacodegeeks.snippets.desktop;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.event.WindowStateListener;
public class FrameEventListener {
public static void main(String[] args) {
// Create the frame
Frame frame = new Frame();
// Create a listener for window events
WindowAdapter listener = new WindowAdapter() {
// This method is called after a window state has been changed
public void windowStateChanged(WindowEvent evt) {
Frame frame = (Frame)evt.getSource();
int oldState = evt.getOldState();
int newState = evt.getNewState();
if ((oldState & Frame.ICONIFIED) == 0 && (newState & Frame.ICONIFIED) != 0) {
System.out.println("Frame was iconized");
} else if ((oldState & Frame.ICONIFIED) != 0 && (newState & Frame.ICONIFIED) == 0) {
System.out.println("Frame was deiconized");
}
if ((oldState & Frame.MAXIMIZED_BOTH) == 0 && (newState & Frame.MAXIMIZED_BOTH) != 0) {
System.out.println("Frame was maximized");
} else if ((oldState & Frame.MAXIMIZED_BOTH) != 0 && (newState & Frame.MAXIMIZED_BOTH) == 0) {
System.out.println("Frame was minimized");
}
}
// This method is called after a window has been opened
public void windowOpened(WindowEvent evt) {
Frame frame = (Frame)evt.getSource();
System.out.println("Window is opened");
}
// This method is called when the user clicks the close button
public void windowClosing(WindowEvent evt) {
Frame frame = (Frame)evt.getSource();
System.out.println("Window is closing");
}
// This method is called after a window is closed
public void windowClosed(WindowEvent evt) {
Frame frame = (Frame)evt.getSource();
System.out.println("Window closed");
}
};
// Register the listeners with the frame
frame.addWindowStateListener((WindowStateListener)listener);
frame.addWindowListener((WindowListener)listener);
// Display the frame
int frameWidth = 300;
int frameHeight = 300;
frame.setSize(frameWidth, frameHeight);
frame.setVisible(true);
}
}
This was an example on how to determining when a frame is Iconized or Maximized or Opened or Closed.

