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);
}
}
}