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下了的,有点图片读不到,你参考下改把,俺们是菜鸟,不知道怎么改了!
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下了的,有点图片读不到,你参考下改把,俺们是菜鸟,不知道怎么改了!
解决方案 »
- java Socket 聊天怎么实现私聊
- java入门求教,如何学好java,求教各位大虾
- 一个关于数据更新的问题
- 如何由年份和星期而得到当年所有的日期(月日)在线等,急!!!
- 新建一个panel的问题,似乎是实例化的毛病.---我一个初学者,大家都看看把
- 如何把对象发送到远程主机,远程主机如何把发送过来的对象流还原??
- java中的SWING到底有用不??
- 88分王的问题---如何禁止窗口右上角最大化按钮并同时使窗体不能被缩放?
- 关于PipedInputStream/PipedOutputStream的使用(在线)
- 如何连接byte[]数组?
- 如何隐藏某列的显示?
- 我要把上传的图片自动命名,如2004030812:34:05~1000.jpg就是精确到嚎秒级,如何做到,我看了j2sdk,getYear()之类是过期了的
这是我在这个网叶搞过来的,你搞好了,能教下小弟不,是哪个
renderer = (JLabel)table.getColumn(column[i]).getHeaderRenderer();
读不到
我同事说applet不能读文件可能读不出了
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;
}
};
}