Java tutorial
import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JLayeredPane; import javax.swing.event.InternalFrameEvent; import javax.swing.event.InternalFrameListener; public class InternalFrameTest { public static void main(String args[]) { JFrame frame = new JFrame("Internal Frame Listener"); Container contentPane = frame.getContentPane(); JLayeredPane desktop = new JDesktopPane(); desktop.setOpaque(false); desktop.add(createLayer("One"), JLayeredPane.POPUP_LAYER); desktop.add(createLayer("Two"), JLayeredPane.DEFAULT_LAYER); desktop.add(createLayer("Three"), JLayeredPane.PALETTE_LAYER); contentPane.add(desktop, BorderLayout.CENTER); frame.setSize(300, 300); frame.show(); } static JInternalFrame createLayer(String label) { return new SelfInternalFrame(label); } static class SelfInternalFrame extends JInternalFrame { InternalFrameListener listener = new InternalFrameListener() { public void internalFrameActivated(InternalFrameEvent e) { dumpInfo("Activated", e); } public void internalFrameClosed(InternalFrameEvent e) { dumpInfo("Closed", e); } public void internalFrameClosing(InternalFrameEvent e) { dumpInfo("Closing", e); } public void internalFrameDeactivated(InternalFrameEvent e) { dumpInfo("Deactivated", e); } public void internalFrameDeiconified(InternalFrameEvent e) { dumpInfo("Deiconified", e); } public void internalFrameIconified(InternalFrameEvent e) { dumpInfo("Iconified", e); } public void internalFrameOpened(InternalFrameEvent e) { dumpInfo("Opened", e); } private void dumpInfo(String s, InternalFrameEvent e) { System.out.println("Source: " + e.getInternalFrame().getName() + " : " + s); } }; public SelfInternalFrame(String s) { getContentPane().add(new JLabel(s, JLabel.CENTER), BorderLayout.CENTER); setName(s); addInternalFrameListener(listener); setBounds(50, 50, 100, 100); setResizable(true); setClosable(true); setMaximizable(true); setIconifiable(true); setTitle(s); setVisible(true); } } }