实现TableCellRenderer就可以了吧,继承自JLabel
class IconTableRender extends JLabel implements TableCellRenderer{
public Component getTableCellRendererComponent(JTable jtblTable,
Object oValue,
boolean bIsSelected,
boolean bHasFocus,
int iRow,
int iColumn){
}
}
class IconTableRender extends JLabel implements TableCellRenderer{
public Component getTableCellRendererComponent(JTable jtblTable,
Object oValue,
boolean bIsSelected,
boolean bHasFocus,
int iRow,
int iColumn){
}
}
程序绝对没问题,别和我说你看不懂import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.table.*;
public class AnimatedIconTableExample extends JFrame { public AnimatedIconTableExample(){
super( "AnimatedIconTable Example" );
final Object[][] data = new Object[][]{
{new ImageIcon("images/3-40.gif"),new ImageIcon("images/3-119.gif")},
{new ImageIcon("images/3-41.gif"),new ImageIcon("images/3-6.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);
}
}
实现TableCellRenderer就可以了吧,继承自JLabel
class IconTableRender extends JLabel implements TableCellRenderer{
//重写这个方法
public Component getTableCellRendererComponent(JTable jtblTable,
Object oValue,
boolean bIsSelected,
boolean bHasFocus,
int iRow,
int iColumn){
//这需要你把表格中的value定义一个类,包含Icon信息
this.setIcon(oValue中应该得到这个Icon)
return this;
}
}
就这么简单,还有什么不明白的吗?
强......
请各位帮忙想想啊要求如下图!
http://upload.51land.com/upload/magicist_aaaaa.jpg
http://upload.51land.com/upload432/magicist_aaaaa.jpg