esuslogo
 [To advertise Java(tm) Events here, contact joris@esus.com!]
banner

Java™
by example!






New @ Esus.com


  gb  In-house search engine for better results!

  gb  Get updates with the esus.com
newsletter!









  Home 
 Browse Categories 
 Ask a Java Question 
 Help 
  For Java Tips & Tricks, subscribe to the esus.com newsletter!
Search Java Q&A, Links, API's:   adv 

How do I create a JTable with images in the headers?
Courtesy of Nobuo Tamemasa (http://www2.gol.com/users/tame/swing/examples/JTableExamples8.html)





AnimatedIconHeaderExample.java:


import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.table.*;

/**
* @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("images/3-119.gif"),
new ImageIcon("images/3-6.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);
}
}




Further Information
Author of answer:

Comments
Comments to this answer are only viewable by members. Login or become a member!





Terms of Service | Privacy Policy | Contact

Copyright © 2000-2003 Esus.com - All Rights Reserved 
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. Esus.com is independent of Sun Microsystems, Inc. All other trademarks are the sole property of their respective owners.