Jtable添加图片,并自由改变图片大小

来源:互联网 发布:判断80端口是否打开 编辑:程序博客网 时间:2024/05/04 03:34

需要重写方法

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);      }    }  }}






原创粉丝点击