Swing JFC Java

import java.beans.PropertyVetoException;
import javax.swing.border.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class DesktopManagerDemo extends JFrame implements ActionListener{
  protected int m_count;
  protected int m_tencount;
  protected JButton m_newFrame;
  protected JDesktopPane m_desktop;
  protected JComboBox m_UIBox;
  protected UIManager.LookAndFeelInfo[] m_infos;
  protected JLabel m_lActivates, m_lBegindrags, m_lBeginresizes, m_lCloses, 
    m_lDeactivates, m_lDeiconifies, m_lDrags, m_lEnddrags, m_lEndresizes,
    m_lIconifies, m_lMaximizes, m_lMinimizes, m_lOpens, m_lResizes, m_lSetbounds;
  protected MyDesktopManager m_myDesktopManager;
  protected DMEventCanvas m_dmEventCanvas;
  protected Timer m_eventTimer;
    
  public DesktopManagerDemo() {
    setTitle("Animated DesktopManager");
    m_count = m_tencount = 0;
    JPanel innerListenerPanel = new JPanel(new GridLayout(15,1));
    JPanel listenerPanel = new JPanel(new BorderLayout());
    m_dmEventCanvas = new DMEventCanvas();
        
    m_lActivates = new JLabel("activateFrame");
    m_lBegindrags = new JLabel("beginDraggingFrame");
    m_lBeginresizes = new JLabel("beginResizingFrame");
    m_lCloses = new JLabel("closeFrame");
    m_lDeactivates = new JLabel("deactivateFrame");
    m_lDeiconifies = new JLabel("deiconifyFrame");
    m_lDrags = new JLabel("dragFrame");
    m_lEnddrags = new JLabel("endDraggingFrame");
    m_lEndresizes = new JLabel("endResizingFrame");
    m_lIconifies = new JLabel("iconifyFrame");
    m_lMaximizes = new JLabel("maximizeFrame");
    m_lMinimizes = new JLabel("minimizeFrame");
    m_lOpens = new JLabel("openFrame");
    m_lResizes = new JLabel("resizeFrame");
    m_lSetbounds = new JLabel("setBoundsForFrame");
    innerListenerPanel.add(m_lActivates);
    innerListenerPanel.add(m_lBegindrags);
    innerListenerPanel.add(m_lBeginresizes);
    innerListenerPanel.add(m_lCloses);
    innerListenerPanel.add(m_lDeactivates);
    innerListenerPanel.add(m_lDeiconifies);
    innerListenerPanel.add(m_lDrags);
    innerListenerPanel.add(m_lEnddrags);
    innerListenerPanel.add(m_lEndresizes);
    innerListenerPanel.add(m_lIconifies);
    innerListenerPanel.add(m_lMaximizes);
    innerListenerPanel.add(m_lMinimizes);
    innerListenerPanel.add(m_lOpens);
    innerListenerPanel.add(m_lResizes);
    innerListenerPanel.add(m_lSetbounds);
    listenerPanel.add("Center", m_dmEventCanvas);
    listenerPanel.add("West", innerListenerPanel);
    listenerPanel.setOpaque(true);
    listenerPanel.setBackground(Color.white);
    m_myDesktopManager = new MyDesktopManager();
    m_desktop = new JDesktopPane();
    m_desktop.setDesktopManager(m_myDesktopManager);
    m_desktop.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
    m_newFrame = new JButton("New Frame");
    m_newFrame.addActionListener(this);
    m_infos = UIManager.getInstalledLookAndFeels();
    String[] LAFNames = new String[m_infos.length];
    for(int i=0; i      LAFNames[i] = m_infos[i].getName();
    }
    m_UIBox = new JComboBox(LAFNames);
    m_UIBox.addActionListener(this);
    JPanel topPanel = new JPanel(true);
    topPanel.setLayout(new FlowLayout());
    topPanel.setBorder(new CompoundBorder(
      new SoftBevelBorder(BevelBorder.LOWERED),
      new CompoundBorder(new EmptyBorder(2,2,2,2),
        new SoftBevelBorder(BevelBorder.RAISED))));
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add("North", topPanel);
    getContentPane().add("Center", m_desktop);
    getContentPane().add("South", listenerPanel);
    ((JPanel) getContentPane()).setBorder(new CompoundBorder(
      new SoftBevelBorder(BevelBorder.LOWERED),
      new CompoundBorder(new EmptyBorder(1,1,1,1),
        new SoftBevelBorder(BevelBorder.RAISED))));
    topPanel.add(m_newFrame);
    topPanel.add(new JLabel("Look & Feel:",SwingConstants.RIGHT));
    topPanel.add(m_UIBox);
    setSize(645,600);
    Dimension dim = getToolkit().getScreenSize();
    setLocation(dim.width/2-getWidth()/2,
      dim.height/2-getHeight()/2);
    setVisible(true);
    WindowListener l = new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    };       
    addWindowListener(l);
    m_eventTimer = new Timer(1000, this);
    m_eventTimer.setRepeats(true);
    m_eventTimer.start();
  }
  public void newFrame() {
    JInternalFrame jif = new JInternalFrame("Frame " + m_count, 
      true, true, true, true);
    jif.setBounds(20*(m_count%10) + m_tencount*80, 
      20*(m_count%10), 200, 200);
    JLabel label = new JLabel();
    label.setBackground(Color.white);
    label.setOpaque(true);
    jif.getContentPane().add(label);
    m_desktop.add(jif);
    try {            
      jif.setSelected(true);        
    }
    catch (PropertyVetoException pve) {
      System.out.println("Could not select " + jif.getTitle());
    }
    m_count++;
    if (m_count%10 == 0) {
      if (m_tencount < 3)
        m_tencount++;
      else 
        m_tencount = 0;
    }
  }
  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == m_newFrame)
      newFrame();
    else if (e.getSource() == m_eventTimer) {
      m_dmEventCanvas.render(m_myDesktopManager.getCounts());
      m_myDesktopManager.clearCounts();
    }
    else if (e.getSource() == m_UIBox) {
      try {
        m_UIBox.hidePopup(); //BUG WORKAROUND
        UIManager.setLookAndFeel(m_infos[m_UIBox.getSelectedIndex()].getClassName());
        SwingUtilities.updateComponentTreeUI(this);
      }
      catch(Exception ex) {
        System.out.println("Could not load " + 
          m_infos[m_UIBox.getSelectedIndex()].getClassName());
      }
    }
  }
 
  public static void main(String[] args) {
    new DesktopManagerDemo();
  }
}
class MyDesktopManager 
extends DefaultDesktopManager
{
  protected int[] m_counts = new int[15];
  public void clearCounts() {
    for (int i=0; i<15; i++) {
      m_counts[i] = 0;
    }
  }
  public int[] getCounts() { return m_counts; }
    
  public void activateFrame(JInternalFrame f) {
    super.activateFrame(f);
    m_counts[0]++;
  }
  public void beginDraggingFrame(JComponent f) { 
    m_counts[1]++; 
  }
  public void beginResizingFrame(JComponent f, int direction) { 
    m_counts[2]++; 
  }
  public void closeFrame(JInternalFrame f) {
    super.closeFrame(f);
    m_counts[3]++;
  }
  public void deactivateFrame(JInternalFrame f) {
    super.deactivateFrame(f);
    m_counts[4]++;
  }
  public void deiconifyFrame(JInternalFrame f) {
    super.deiconifyFrame(f);
    m_counts[5]++;
  }
  public void dragFrame(JComponent f, int newX, int newY) {
    f.setLocation(newX, newY);
    m_counts[6]++;
  }
  public void endDraggingFrame(JComponent f) {
    m_counts[7]++;
  }
  public void endResizingFrame(JComponent f) {
    m_counts[8]++;
  }
  public void iconifyFrame(JInternalFrame f) {
    super.iconifyFrame(f);
    m_counts[9]++;
  }
  public void maximizeFrame(JInternalFrame f) {
    super.maximizeFrame(f);
    m_counts[10]++;
  }
  public void minimizeFrame(JInternalFrame f) {
    super.minimizeFrame(f);
    m_counts[11]++;
  }
  public void openFrame(JInternalFrame f) {
    m_counts[12]++;
  }
  public void resizeFrame(JComponent f,
   int newX, int newY, int newWidth, int newHeight) {
    f.setBounds(newX, newY, newWidth, newHeight);
    m_counts[13]++;
  }
  public void setBoundsForFrame(JComponent f,
   int newX, int newY, int newWidth, int newHeight) {
    f.setBounds(newX, newY, newWidth, newHeight);
    m_counts[14]++;
  }
}
class DMEventCanvas
extends JComponent
{
  protected Color[] m_colors = new Color[15];
  protected int[][] m_arrays = new int[15][12];
  public DMEventCanvas() {
    setPreferredSize(new Dimension(505,255));
    for (int i=0; i<15; i++) {
      m_arrays[i] = new int[12];
      m_colors[i] = new Color(37+i*4, 37+i*4, 37+i*4);
    }
  }
  public void paintEventSquare(Graphics g, int value, int currwidth, 
   int currheight, int cellwidth, int cellheight, Color color) {
    if(value != 0) {
      g.setColor(color);
      g.fillRect(currwidth, currheight, cellwidth, cellheight); 
      g.setColor(Color.green);
      g.drawString("" + value, currwidth + 5, currheight + 14);
    }
    g.setColor(Color.black);
    g.drawRect(currwidth, currheight, cellwidth, cellheight);
  }
  public void paintComponent(Graphics g) {
    int cellheight = 17;
    int cellwidth = 42;
    int currwidth = 0;
    int currheight = 0;
    for (int i=0; i < 12; i++) {
      for (int j=0; j < 15; j++) {
        paintEventSquare(g, m_arrays[j][i], currwidth, currheight,
          cellwidth, cellheight, m_colors[j]);
        currheight += cellheight;
      }
      currheight = 0;
      currwidth += cellwidth;
    }
  }
  public void render(int[] counts) {
    for (int i=0; i < 11; i++) {
      for (int j=0; j < 15; j++) {            
        m_arrays[j][i] = m_arrays[j][i+1];
      }
    }
    for (int k=0; k < 15; k++) {
      m_arrays[k][11] = counts[k];
    }
    paintImmediately(new Rectangle(20,20,505,255));
  }
}