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")};
     //System.out.println(icons[0].getImage());
     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 );
     //System.out.println("count:"+table) ;
     JTableHeader header = table.getTableHeader();
     JLabel renderer = null;
     //System.out.println("count: " + model.getColumnCount());
     for (int i=0;i<model.getColumnCount();i++)
     {
         System.out.println(table.getColumn(column[i]));
         System.out.println(table.getColumn(column[i]).getHeaderRenderer());
         renderer = (JLabel)table.getColumn(column[i]).getHeaderRenderer();
         //System.out.println(renderer);
        if(renderer != null)
         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);
    }
}
不过最后也不是很行了,我在一个网上copy下了的,有点图片读不到,你参考下改把,俺们是菜鸟,不知道怎么改了!

解决方案 »

  1.   

    http://www.esus.com/docs/GetQuestionPage.jsp?uid=1271
    这是我在这个网叶搞过来的,你搞好了,能教下小弟不,是哪个
    renderer = (JLabel)table.getColumn(column[i]).getHeaderRenderer();
    读不到
      

  2.   

    你是要用applet还是应用程序了?
    我同事说applet不能读文件可能读不出了
      

  3.   


    import javax.swing.*;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.table.JTableHeader;
    import java.awt.*;/**
     * Created by IntelliJ IDEA.
     * User: hufeng
     * Date: Jul 14, 2004
     * Time: 11:06:52 AM
     * To change this template use Options | File Templates.
     */
    public class TableExample {
        public static void main(String args[])
        {
            JFrame j = new TableExampleJFrame();
            j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            j.show();
        }}
    class TableExampleJFrame extends JFrame
    {
        public TableExampleJFrame()
        {
            setSize(300,300);
             DefaultTableModel model = new DefaultTableModel();
             JTable table = new JTable(model);         // Create 2 columns
            model.addColumn("Col1");
            model.addColumn("Col2");
            // the header value for this column will be overwritten
            // with a TextandIcon object        // Set the icon renderer on the second column
            table.getTableHeader().getColumnModel()
            .getColumn(1).setHeaderRenderer(iconHeaderRenderer);        // Set the text and icon values on the second column for the icon render
            table.getColumnModel().getColumn(1).setHeaderValue(
            new TextAndIcon("Col2", new ImageIcon("a.gif")));
            JScrollPane pane = new JScrollPane(table);
            Container c = getContentPane();
            c.add(pane,BorderLayout.CENTER);    }
        // This class is used to hold the text and icon values
        // used by the renderer that renders both text and icons
        class TextAndIcon {
            TextAndIcon(String text, Icon icon) {
                this.text = text;
                this.icon = icon;
            }
            String text;
            Icon icon;
        }    // This customized renderer can render objects of the type TextandIcon
        TableCellRenderer iconHeaderRenderer = new DefaultTableCellRenderer() {
            public Component getTableCellRendererComponent(JTable table, Object value,
                    boolean isSelected, boolean hasFocus, int row, int column) {
                // Inherit the colors and font from the header component
                if (table != null) {
                    JTableHeader header = table.getTableHeader();
                    if (header != null) {
                        setForeground(header.getForeground());
                        setBackground(header.getBackground());
                        setFont(header.getFont());
                    }
                }            if (value instanceof TextAndIcon) {
                    setIcon(((TextAndIcon)value).icon);
                    setText(((TextAndIcon)value).text);
                } else {
                    setText((value == null) ? "" : value.toString());
                    setIcon(null);
                }
                setBorder(UIManager.getBorder("TableHeader.cellBorder"));
                setHorizontalAlignment(JLabel.CENTER);
                return this;
            }
        };
    }