Mega Code Archive

 
Categories / Java / Swing Components
 

Animated Icon Table 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.JScrollPane; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; /**  * @version 1.0 06/19/99  */ public class AnimatedIconTableExample extends JFrame {   public AnimatedIconTableExample() {     super("AnimatedIconTable Example");     final Object[][] data = new Object[][] {         { new ImageIcon("rntsoftAnimation.gif"),             new ImageIcon("rntsoftAnimation.gif") },         { new ImageIcon("rntsoftAnimation.gif"),             new ImageIcon("rntsoftAnimation.gif") } };     final Object[] column = new Object[] { "Boy and Girl", "Dog and Cat" };     AbstractTableModel model = new AbstractTableModel() {       public int getColumnCount() {         return column.length;       }       public int getRowCount() {         return data.length;       }       public String getColumnName(int col) {         return (String) column[col];       }       public Object getValueAt(int row, int col) {         return data[row][col];       }       public Class getColumnClass(int col) {         return ImageIcon.class;       }     };     JTable table = new JTable(model);     table.setRowHeight(50);     setImageObserver(table);     JScrollPane pane = new JScrollPane(table);     getContentPane().add(pane);   }   private void setImageObserver(JTable table) {     TableModel model = table.getModel();     int colCount = model.getColumnCount();     int rowCount = model.getRowCount();     for (int col = 0; col < colCount; col++) {       if (ImageIcon.class == model.getColumnClass(col)) {         for (int row = 0; row < rowCount; row++) {           ImageIcon icon = (ImageIcon) model.getValueAt(row, col);           if (icon != null) {             icon.setImageObserver(new CellImageObserver(table, row,                 col));           }         }       }     }   }   class CellImageObserver implements ImageObserver {     JTable table;     int row;     int col;     CellImageObserver(JTable table, int row, int col) {       this.table = table;       this.row = row;       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 = table.getCellRect(row, col, false);         table.repaint(rect);       }       return (flags & (ALLBITS | ABORT)) == 0;     }   }   public static void main(String[] args) {     AnimatedIconTableExample frame = new AnimatedIconTableExample();     frame.addWindowListener(new WindowAdapter() {       public void windowClosing(WindowEvent e) {         System.exit(0);       }     });     frame.setSize(300, 150);     frame.setVisible(true);   } }