Java JInternalFrame handle internal frame event

Description

Java JInternalFrame handle internal frame event

import java.awt.BorderLayout;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.InternalFrameListener;

class InternalFrameIconifyListener extends InternalFrameAdapter {
   public void internalFrameIconified(InternalFrameEvent internalFrameEvent) {
      JInternalFrame source = (JInternalFrame) internalFrameEvent.getSource();
      System.out.println("Iconified: " + source.getTitle());
   }//  w  w w. j a  v  a 2s .c om

   public void internalFrameDeiconified(InternalFrameEvent internalFrameEvent) {
      JInternalFrame source = (JInternalFrame) internalFrameEvent.getSource();
      System.out.println("Deiconified: " + source.getTitle());
   }
}

public class Main {
   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);

      InternalFrameListener internalFrameListener = new InternalFrameIconifyListener();

      internalFrame.addInternalFrameListener(internalFrameListener);

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



PreviousNext

Related