Mega Code Archive

 
Categories / Java / Swing JFC
 

Internal Frame Listener Demo

import java.beans.PropertyVetoException; import javax.swing.plaf.*; import javax.swing.border.*; import javax.swing.event.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; public class InternalFrameListenerDemo  extends JFrame implements ActionListener, InternalFrameListener {   protected int m_count;   protected int m_tencount;   private int[] m_counts = new int[7];   private int m_open, m_closing, m_close, m_iconify,      m_deiconify, m_activate, m_deactivate;   protected JButton m_newFrame;   protected JDesktopPane m_desktop;   protected JComboBox m_UIBox;   protected UIManager.LookAndFeelInfo[] m_infos;   private JLabel m_lOpened, m_lClosing, m_lClosed,      m_lIconified, m_lDeiconified, m_lActivated,      m_lDeactivated;   protected IFEventCanvas m_ifEventCanvas;   protected Timer m_eventTimer;        public InternalFrameListenerDemo() {     setTitle("Animated InternalFrameListener");     m_count = m_tencount = 0;     JPanel innerListenerPanel = new JPanel(new GridLayout(7,1));     JPanel listenerPanel = new JPanel(new BorderLayout());     m_ifEventCanvas = new IFEventCanvas();              m_lOpened = new JLabel("internalFrameOpened");     m_lClosing = new JLabel("internalFrameClosing");     m_lClosed = new JLabel("internalFrameClosed");     m_lIconified = new JLabel("internalFrameIconified");     m_lDeiconified = new JLabel("internalFrameDeiconified");     m_lActivated = new JLabel("internalFrameActivated");     m_lDeactivated = new JLabel("internalFrameDeactivated");     innerListenerPanel.add(m_lOpened);     innerListenerPanel.add(m_lClosing);     innerListenerPanel.add(m_lClosed);     innerListenerPanel.add(m_lIconified);     innerListenerPanel.add(m_lDeiconified);     innerListenerPanel.add(m_lActivated);     innerListenerPanel.add(m_lDeactivated);     listenerPanel.add("Center", m_ifEventCanvas);     listenerPanel.add("West", innerListenerPanel);     listenerPanel.setOpaque(true);     listenerPanel.setBackground(Color.white);     m_desktop = new JDesktopPane();     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<m_infos.length; 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,500);     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.addInternalFrameListener(this);     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 clearCounts() {     for (int i=0; i<7; i++) {       m_counts[i] = 0;     }   }   public int[] getCounts() {     return m_counts;   }   public void internalFrameOpened(InternalFrameEvent e) {     m_counts[0]++;       }   public void internalFrameClosing(InternalFrameEvent e) {     m_counts[1]++;       }   public void internalFrameClosed(InternalFrameEvent e) {     m_counts[2]++;       }   public void internalFrameIconified(InternalFrameEvent e) {     m_counts[3]++;       }   public void internalFrameDeiconified(InternalFrameEvent e) {     m_counts[4]++;       }   public void internalFrameActivated(InternalFrameEvent e) {     m_counts[5]++;   }   public void internalFrameDeactivated(InternalFrameEvent e) {     m_counts[6]++;       }   public void actionPerformed(ActionEvent e) {     if (e.getSource() == m_newFrame)       newFrame();     else if (e.getSource() == m_eventTimer) {       m_ifEventCanvas.render(getCounts());       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 InternalFrameListenerDemo();   } } class IFEventCanvas extends JComponent {   private Color[] m_colors = new Color[8];   private int[][] m_arrays = new int[15][12];   public IFEventCanvas() {     setPreferredSize(new Dimension(505,130));     for (int i=0; i<7; i++) {       m_arrays[i] = new int[12];       m_colors[i] = new Color(37+i*14, 37+i*14, 37+i*14);     }   }   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 = 19;     int cellwidth = 40;     int currwidth = 0;     int currheight = 0;     for (int i=0; i < 12; i++) {       for (int j=0; j < 7; 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 < 7; j++) {                     m_arrays[j][i] = m_arrays[j][i+1];       }     }     for (int k=0; k < 7; k++) {       m_arrays[k][11] = counts[k];     }     paintImmediately(new Rectangle(0,0,505,130));   } }