Mega Code Archive

 
Categories / Java / Swing Components
 

Animated Icon Header Example

// Example from http://www.crionics.com/products/opensource/faq/swing_ex/SwingExamples.html /* (swing1.1.1beta2) */ import java.awt.Image; import java.awt.Rectangle; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.ImageObserver; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.table.AbstractTableModel; import javax.swing.table.JTableHeader; /**  * @version 1.0 06/19/99  */ public class AnimatedIconHeaderExample extends JFrame {   public AnimatedIconHeaderExample() {     super("AnimatedIconHeader Example");     final Object[][] data = new Object[][] { { "Leopard", "Lycaon" },         { "Jagur", "Jackal" }, { "Cheetah", "Coyote" },         { "Puma", "Dingo" }, { "Lynx", "Fox" }, { "Tom", "Hot" } };     final String[] column = new String[] { "Cat", "Dog" };     ImageIcon[] icons = { new ImageIcon("rntsoftAnimation.gif"),         new ImageIcon("rntsoftAnimation.gif") };     AbstractTableModel model = new AbstractTableModel() {       public int getColumnCount() {         return column.length;       }       public int getRowCount() {         return data.length;       }       public String getColumnName(int col) {         return column[col];       }       public Object getValueAt(int row, int col) {         return data[row][col];       }     };     JTable table = new JTable(model);     JTableHeader header = table.getTableHeader();     JLabel renderer;     for (int i = 0; i < model.getColumnCount(); i++) {       renderer = (JLabel) table.getColumn(column[i]).getHeaderRenderer();       renderer.setIcon(icons[i]);       // If you have only one column.       // icons[i].setImageObserver(header);       icons[i].setImageObserver(new HeaderImageObserver(header, i));     }     JScrollPane pane = new JScrollPane(table);     getContentPane().add(pane);   }   class HeaderImageObserver implements ImageObserver {     JTableHeader header;     int col;     HeaderImageObserver(JTableHeader header, int col) {       this.header = header;       this.col = col;     }     public boolean imageUpdate(Image img, int flags, int x, int y, int w,         int h) {       if ((flags & (FRAMEBITS | ALLBITS)) != 0) {         Rectangle rect = header.getHeaderRect(col);         header.repaint(rect);       }       return (flags & (ALLBITS | ABORT)) == 0;     }   }   public static void main(String[] args) {     AnimatedIconHeaderExample frame = new AnimatedIconHeaderExample();     frame.addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent e) {         System.exit(0);       }     });     frame.setSize(300, 140);     frame.setVisible(true);   } }