JTable中负责显示的是TableCellRenderer.而JTable默认是DefaultTableCellRenderer来渲染,其实就是个JLable。你可以看一下DefaultTableCellRenderer的API,
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
这个方法决定了显示的效果。
而默认只是把value toString()了。如果你想显示为图片,则需要重写此方法:import java.awt.Component;import javax.swing.Icon;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;public class SupportIconTableCellRenderer extends DefaultTableCellRenderer { @Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
row, column); if (value instanceof Icon) {
this.setIcon((Icon) value);
// remove lable's text
this.setText("");
} return this;
}}
简单实现了下,自己可以根据需要扩展。
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
这个方法决定了显示的效果。
而默认只是把value toString()了。如果你想显示为图片,则需要重写此方法:import java.awt.Component;import javax.swing.Icon;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;public class SupportIconTableCellRenderer extends DefaultTableCellRenderer { @Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
row, column); if (value instanceof Icon) {
this.setIcon((Icon) value);
// remove lable's text
this.setText("");
} return this;
}}
简单实现了下,自己可以根据需要扩展。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货