需要重写方法
1、jtable中部分代码。。主要看图片处理的部分
public JPanel getBookPanel(Vector<Book> bookList) throws IOException {
Vector<String> title = new Vector<String>();// 列名
title.add("书图");
title.add("isbn");
title.add("书名");
title.add("书类型");
title.add("单价");
title.add("出版社");
title.add("作者");
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
for (int i = 0; i < bookList.size(); i++) {
Vector<Object> v = new Vector<Object>();
Book b = bookList.get(i);
ImageIcon icon = new ImageIcon("images/" + b.getBookImage());//图片处理
icon.setImage(icon.getImage().getScaledInstance(80,100,Image.SCALE_DEFAULT));
Image img = icon.getImage();
v.add(img);
v.add(b.getIsbn());
v.add(b.getBookName());
v.add(b.getBookType());
v.add(b.getPrice());
v.add(b.getPublish());
v.add(b.getAuthor());
data.add(v);
}
model = new DefaultTableModel(data, title);
table = new JTable(model);
table.getTableHeader().setReorderingAllowed(false); //不可整列移动
table.getTableHeader().setResizingAllowed(false);
table.getColumnModel().getColumn(0)
.setCellRenderer(new ImageRenderer());
table.setRowHeight(100);
2、ImageRenderer类
package com.seven.view;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class ImageRenderer implements TableCellRenderer
{
@SuppressWarnings("unchecked")
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int rowIndex, int columnIndex) {
if( value instanceof Image ){
JLabel jLabel = new JLabel();
jLabel.setLayout(new BorderLayout());//设置布局
jLabel.setIcon(new ImageIcon((Image)value));//给jlable设置图片
return jLabel;
}
else if( value instanceof File ) {
try {
return new JLabel(new ImageIcon(ImageIO.read((File)value)));
} catch(IOException ex) {
throw new RuntimeException(ex.getMessage(), ex);
}
}
else {
String val = String.valueOf(value);
try {
return new JLabel(new ImageIcon(ImageIO.read(new File(val))));
} catch(IOException ex) {
throw new RuntimeException(ex.getMessage(), ex);
}
}
}
}