Java tutorial
import java.awt.BorderLayout; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; class InternalFramePropertyChangeHandler implements PropertyChangeListener { public void propertyChange(PropertyChangeEvent propertyChangeEvent) { String propertyName = propertyChangeEvent.getPropertyName(); System.out.println(propertyName); if (propertyName.equals(JInternalFrame.IS_ICON_PROPERTY)) { System.out.println("Icon property changed. React."); } } } public class InternalFramePropertyChangeHandlerSample { public static void main(final String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JDesktopPane desktop = new JDesktopPane(); JInternalFrame internalFrame = new JInternalFrame("Can Do All", true, true, true, true); InternalFramePropertyChangeHandler ins = new InternalFramePropertyChangeHandler(); // Add listener for iconification events internalFrame.addPropertyChangeListener(ins); desktop.add(internalFrame); internalFrame.setBounds(25, 25, 200, 100); JLabel label = new JLabel(internalFrame.getTitle(), JLabel.CENTER); internalFrame.add(label, BorderLayout.CENTER); internalFrame.setVisible(true); frame.add(desktop, BorderLayout.CENTER); frame.setSize(500, 300); frame.setVisible(true); } }