成员变量为:
Vector<String> columns;--列名
Vector<Object> rows;--数据
SqlHelper sh; --用于连接数据库
ResultSet rs;--结果集
然后用JTbale调用这个表数据模型,现在的问题是:
以前第4列显示的是图片的路径(从数据库中读到的),如何让这一列显示出图片呢?
Demo里面的SwingSet2的代码太多了,实在是头大呀O(∩_∩)O~
5 个解决方案
#1
自定义一个CellEditor实现TableCellEditor的接口,可以继承按钮一类可以承载图片的组件,
重载TableModel的getTableCellEditorComponent方法,在指定的单元格将自定义的组件返回即可。
重载TableModel的getTableCellEditorComponent方法,在指定的单元格将自定义的组件返回即可。
#2
实现TableCellRenderer就ok了。。。。
lz参考这篇文章
http://blog.csdn.net/chosen0ne/archive/2009/08/16/4453267.aspx
lz参考这篇文章
http://blog.csdn.net/chosen0ne/archive/2009/08/16/4453267.aspx
public 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楼不好意思哈,是我自己疏忽,少了一个正斜杠,改了之后就能显示图片了。
我希望JTable 的行高固定为128 把图片的大小也缩放成128,应该就能正常显示了?
return new JLabel(new ImageIcon(".settings/dietiamges/"+value.toString()));
我希望JTable 的行高固定为128 把图片的大小也缩放成128,应该就能正常显示了?
#1
自定义一个CellEditor实现TableCellEditor的接口,可以继承按钮一类可以承载图片的组件,
重载TableModel的getTableCellEditorComponent方法,在指定的单元格将自定义的组件返回即可。
重载TableModel的getTableCellEditorComponent方法,在指定的单元格将自定义的组件返回即可。
#2
实现TableCellRenderer就ok了。。。。
lz参考这篇文章
http://blog.csdn.net/chosen0ne/archive/2009/08/16/4453267.aspx
lz参考这篇文章
http://blog.csdn.net/chosen0ne/archive/2009/08/16/4453267.aspx
public 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楼不好意思哈,是我自己疏忽,少了一个正斜杠,改了之后就能显示图片了。
我希望JTable 的行高固定为128 把图片的大小也缩放成128,应该就能正常显示了?
return new JLabel(new ImageIcon(".settings/dietiamges/"+value.toString()));
我希望JTable 的行高固定为128 把图片的大小也缩放成128,应该就能正常显示了?