Javax Swing Java by API

import java.awt.BorderLayout;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
public class MainClass {
  public static void main(final String args[]) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JDesktopPane desktop = new JDesktopPane();
    JInternalFrame palette = new JInternalFrame("Palette", true, true, true,
        true);
    palette.addPropertyChangeListener(new InternalFramePropertyChangeHandler());
    palette.setBounds(350, 150, 100, 100);
     desktop.add(palette, JDesktopPane.PALETTE_LAYER);
    palette.setVisible(true);
    
    frame.add(desktop, BorderLayout.CENTER);
    frame.setSize(500, 300);
    frame.setVisible(true);
  }
}
class InternalFramePropertyChangeHandler implements PropertyChangeListener { 
  public void propertyChange(PropertyChangeEvent propertyChangeEvent) { 
    String propertyName = propertyChangeEvent.getPropertyName();
    if (propertyName.equals(JInternalFrame.IS_ICON_PROPERTY)) { 
      System.out.println("Icon property changed. React.");
    } 
  } 
}