JTable to set up your own drawing and editor

Then small series on one , a unit of this small series tried to add Gerry Jbable own compiler and renderer

Write your own renderer first need to expand DefaultTableCellRenderer rewrite getTableCellRendererComponent method

在这里插入代码片
import java.awt.Component;
public class me extends DefaultTableCellRenderer{
public  Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean isFocused,int row,int column) {
	Image i=((ImageIcon)value).getImage();
	ImageViewer m=new ImageViewer(i);
	return m;
}
}

Xiao Bian will put his image in the picture viewer

在这里插入代码片

import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.JPanel;

public class ImageViewer extends JPanel {
	Image i;
	public ImageViewer(Image i) {
		this.i=i;
	}
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.drawImage(i, 0, 0, getWidth(), getHeight(), this);
	}
}

Then expand your table model, the one spoken

在这里插入代码片
import javax.swing.ImageIcon;
import javax.swing.table.DefaultTableModel;

public class my extends DefaultTableModel{

public my(Object [][]a,Object[]b) {
	super(a,b);
}
public Class getColumnClass (int c) {
	return getValueAt(0,c).getClass();
}
public boolean isCellEditable(int a,int b) {
	return getColumnClass(b)!=ImageIcon.class;
}
}

Main categories:

在这里插入代码片
import java.*;
import java.awt.*;
import java.awt.event.*;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class Main1 extends JApplet{
	ImageIcon image=new ImageIcon("D:\\java1\\程序\\ai\\程序\\src\\lianxi\\a.jpg");
	ImageIcon image1=new ImageIcon("D:\\java1\\程序\\ai\\程序\\src\\lianxi\\t.jpg");
	private JTable table;
	private String[] biaotou= {"name","sex","qq"};
	private Object [][] neirong= {{"dun","boy",image},{"qi","girl",image1},{"fr","boy",image1}};
	private my model=new my(neirong,biaotou);
	public Main1() {
		table=new JTable(model);
		add(table);
		table.setRowHeight(60);	
		TableColumn c=table.getColumn("qq");
		c.setCellRenderer(new me());//设置自己的绘制器
		TableColumn u=table.getColumn("sex");
		u.setCellEditor(new DefaultCellEditor(new JTextField()));//设置自己的编辑器
		}
}
Published 141 original articles · won praise 16 · views 30000 +

Guess you like

Origin blog.csdn.net/feiqipengcheng/article/details/105193036