Use a WindowStateListener and call WindowEvent#getNewState() and check the Frame.ICONIFIED checkbox.
Here is an example:
import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JPanel; public class Test { public Test() { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel() { @Override public Dimension getPreferredSize() { return new Dimension(300, 300); } }; frame.add(panel); frame.addWindowStateListener(new WindowAdapter() { @Override public void windowStateChanged(WindowEvent we) { if (we.getNewState() == Frame.ICONIFIED) { System.out.println("Here"); } } }); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new Test(); } }); } }
source share