import java.awt.EventQueue; import java.awt.Frame; import java.awt.Toolkit; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author andrei-eremeev */ public class IconifyDeiconify { private static void waitForIdle() { ((sun.awt.SunToolkit)Toolkit.getDefaultToolkit()).realSync(); } private static boolean iconified; private static boolean deiconified; public static void main(String[] args) throws Exception { final Frame frame = new Frame("Main Frame"); frame.addWindowListener(new WindowAdapter() { @Override public void windowIconified(WindowEvent we) { iconified = true; } @Override public void windowDeiconified(WindowEvent we) { deiconified = true; } }); frame.setLocation(100, 100); frame.setSize(400, 400); frame.setVisible(true); waitForIdle(); EventQueue.invokeAndWait(new Runnable() { @Override public void run() { frame.setExtendedState(Frame.ICONIFIED); } }); waitForIdle(); if (frame.getExtendedState() == Frame.ICONIFIED && iconified) { System.out.println("Frame got iconified"); } else { System.out.println("Frame did not get iconified"); } EventQueue.invokeAndWait(new Runnable() { @Override public void run() { frame.setExtendedState(Frame.NORMAL); } }); waitForIdle(); if (frame.getExtendedState() == Frame.NORMAL && deiconified) { System.out.println("Frame got deiconified"); } else { System.out.println("Frame did not get deiconified"); } Thread.sleep(5000); frame.dispose(); } }