我定义了一个表数据模型,继承自AbstractTableModel,重写了4类方法。
成员变量为:
Vector<String> columns;--列名
Vector<Object> rows;--数据
SqlHelper sh; --用于连接数据库
ResultSet rs;--结果集
然后用JTbale调用这个表数据模型,现在的问题是:
以前第4列显示的是图片的路径(从数据库中读到的),如何让这一列显示出图片呢?Demo里面的SwingSet2的代码太多了,实在是头大呀O(∩_∩)O~

解决方案 »

  1.   

     自定义一个CellEditor实现TableCellEditor的接口,可以继承按钮一类可以承载图片的组件,
        重载TableModel的getTableCellEditorComponent方法,在指定的单元格将自定义的组件返回即可。
      

  2.   

    实现TableCellRenderer就ok了。lz参考这篇文章
    http://blog.csdn.net/chosen0ne/archive/2009/08/16/4453267.aspxpublic Component getTableCellRendererComponent(JTable table, Object value,  
            boolean isSelected, boolean hasFocus, int row, int column) { 
                //根据column判断是不是需要显示图片的列,是的话就根据value生成ImageIcon,返回相应的JLabel
                if(....){//是
                    return new JLabel(new ImageIcon(value));
                }else{//否
                    return super.getTableCellRendererComponent(table, value, isSelected,hasFocus, row, column);
                }
            }  
        }  
      

  3.   

    2L:我按照你说的方法,没有成功……原代码(第4列显示出图片路径)
    jpc_jt = new JTable();
    dm = new DietModel();//抽象表模型
    dm.queryAll();//数据查询,第4列为存储图片的路径
    jpc_jt.setModel(dm);
    修改后的代码:
    jpc_jt = new JTable();
    dm = new DietModel();//抽象表模型
    dm.queryAll();//数据查询,第4列为存储图片的路径
    TableCellRenderer renderer = new ColorTableCellRenderer(); 
    jpc_jt.setDefaultRenderer(Object.class, renderer);
    jpc_jt.setModel(dm);
    其中TableCellRenderer如下:
    public class ColorTableCellRenderer extends DefaultTableCellRenderer {
        DefaultTableCellRenderer renderer=new DefaultTableCellRenderer(); 
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value,   
                boolean isSelected, boolean hasFocus, int row, int column) {
            if(column==4){
                return new JLabel(new ImageIcon(".settings/dietiamges"+value.toStrin()));
            }else{
                return super.getTableCellRendererComponent(table, value, isSelected,hasFocus, row, column);
            }
        }
    }
      

  4.   

    能详细一些吗?AbstractTableModel里面没有重载etTableCellEditorComponent这个方法呀……
      

  5.   

    2楼不好意思哈,是我自己疏忽,少了一个正斜杠,改了之后就能显示图片了。return new JLabel(new ImageIcon(".settings/dietiamges/"+value.toString()));
    我希望JTable 的行高固定为128 把图片的大小也缩放成128,应该就能正常显示了?