jtable显示图片的问题?

shixianpeng 2003-09-19 12:10:09
用JTable显示数据库中的记录,
有一字段mypicture用来存放图片的路径,
请问如何能通过这个路径在JTable中显示图片?
mypicture = rs.getString(2); //为图片路径

showPicture = Toolkit.getDefaultToolkit().getImage(mypicture);//这句用来显示图片,但始终无法显示,
JTable中这个字段显示结果如下:
..awt.WImage@sdfasd.sdf ..
..awt.WImage@sdfasdf.sdfd..
.....

请问如何解决?
...全文
483 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shixianpeng 2003-09-22
  • 打赏
  • 举报
回复
谢谢beyond_xiruo(J2EE苏鸿ASP.NET):
这是我对java不熟的缘故,我把
public ResultSetTableModel(Object[][] data,Object[] columnNames)
改成:
public ResultSetTableModel(Vector data,Vector columnNames)
然后:
ResultSetTableModel model = new ResultSetTableModel(data,columnNames);
JTable table=new JTable(model);
成功显示图片!
希偌 2003-09-19
  • 打赏
  • 举报
回复
这是绘制器和编辑器连接方法的问题。
首先,你要将想要显示图片的列进行如下类型设置:
ImageIcon ii=new ImageIcon("xxx.jpg");
添加这个object到JTable相应的列里

最重要的是:
扩展一个TableModel类,如:
class CustomModel extends DefaultTableModel {
public Class getColumnClass(int col) {
Vector v=(Vector)dataVector.elementAt(0);
return v.element(col).getClass();
}
}
最后
JTable jtable=new JTable();
jtable.setModel(new CustomModel());
YuLimin 2003-09-19
  • 打赏
  • 举报
回复
这是一个范例

import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Vector;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;

public class Test extends JFrame
{
String[] columnNames =
{
"Name","Check-In Date","Check-Out Date","Smoking",
"Fax","Laptop","Room Rate","Photo",
};

Date dayOne = (new GregorianCalendar(2000,10,5)).getTime();
Date dayTwo = (new GregorianCalendar(2000,10,7)).getTime();

Object[][] data =
{
{"Andrews",dayOne,dayTwo,
new Boolean(true),new Boolean(true),
new Boolean(true),new Double(79.99),
new ImageIcon("tenchi.jpg")}
,

{"Anthony",dayOne,dayTwo,
new Boolean(false),new Boolean(false),
new Boolean(false),new Double(69.99),
new ImageIcon("washu.jpg")}
,

{"Woodard",dayOne,dayTwo,
new Boolean(true),new Boolean(false),
new Boolean(false),new Double(99.99),
new ImageIcon("sasami.jpg")}
,

{"Thomas",dayOne,dayTwo,
new Boolean(false),new Boolean(true),
new Boolean(true),new Double(79.99),
new ImageIcon("aeka.jpg")}
,

{"Reed",dayOne,dayTwo,
new Boolean(true),new Boolean(true),
new Boolean(true),new Double(79.99),
new ImageIcon("tenchi.jpg")}
,

{"Crenshaw",dayOne,dayTwo,
new Boolean(false),new Boolean(false),
new Boolean(false),new Double(69.99),
new ImageIcon("washu.jpg")}
,

{"Royal",dayOne,dayTwo,
new Boolean(true),new Boolean(false),
new Boolean(false),new Double(99.99),
new ImageIcon("sasami.jpg")}
,

{"Moore",dayOne,dayTwo,
new Boolean(false),new Boolean(true),
new Boolean(true),new Double(79.99),
new ImageIcon("aeka.jpg")}
,
};

JTable table = new JTable(new CustomModel(data,columnNames));
public Test()
{
getContentPane().add(new JScrollPane(table),BorderLayout.CENTER);
}

public static void main(String args[])
{
GJApp.launch(new Test(),"A Custom Table Model That Specifies Column Classes",300,300,650,182);
}
}

class CustomModel extends DefaultTableModel
{
public CustomModel(Object[][] data,Object[] columnNames)
{
super(data,columnNames);
}

public Class getColumnClass(int col)
{
// dataVector is a protected member of DefaultTableModel

Vector v = (Vector)dataVector.elementAt(0);
return v.elementAt(col).getClass();
}

public boolean isCellEditable(int row,int col)
{
Class columnClass = getColumnClass(col);
return columnClass != ImageIcon.class && columnClass != Date.class;
}
}

class GJApp extends WindowAdapter
{
static private JPanel statusArea = new JPanel();
static private JLabel status = new JLabel(" ");
static private ResourceBundle resources;

public static void launch(final JFrame f,String title,final int x,final int y,final int w,int h)
{
launch(f,title,x,y,w,h,null);
}

public static void launch(final JFrame f,String title,final int x,final int y,final int w,int h,String propertiesFilename)
{
f.setTitle(title);
f.setBounds(x,y,w,h);
f.setVisible(true);

statusArea.setBorder(BorderFactory.createEtchedBorder());
statusArea.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));
statusArea.add(status);
status.setHorizontalAlignment(JLabel.LEFT);

f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

if(propertiesFilename != null)
{
resources = ResourceBundle.getBundle(propertiesFilename,Locale.getDefault());
}

f.addWindowListener(new WindowAdapter()
{
public void windowClosed(WindowEvent e)
{
System.exit(0);
}
});
}

static public JPanel getStatusArea()
{
return statusArea;
}

static public void showStatus(String s)
{
status.setText(s);
}

static Object getResource(String key)
{
if(resources != null)
{
return resources.getString(key);
}
return null;
}
}
fpwang 2003-09-19
  • 打赏
  • 举报
回复
学习一下
shixianpeng 2003-09-19
  • 打赏
  • 举报
回复
to beyond_xiruo(J2EE苏鸿ASP.NET):
class ResultSetTableModel extends DefaultTableModel
{
public ResultSetTableModel(Object[][] data,Object[] columnNames)
{
super(data,columnNames);
}
public Class getColumnClass(int col) {
Vector v=(Vector)dataVector.elementAt(0);
return v.elementAt(col).getClass();
}
}
class ResultSetFrame extends JFrame
{ public ResultSetFrame()
{
Vector userInfo = new Vector();
Vector columnNames = new Vector();
Vector data = new Vector();
columnNames.add("编号");
while(rs.next())
{
String id = rs.getString(1);//code
String mypicture = rs.getString(8);//picture
userInfo.add(code);
ImageIcon rpicture=new ImageIcon("aaa.gif");//mypicture存放图片路径
userInfo.add(rpicture);
data.add(userInfo);
}

JTable table=new JTable();
table.setModel(new ResultSetTableModel());//此处编译出错
.....
}


错误如下:
cannot resolve symbol
constructor ResultSetTableModel()
location:class ResultSetTableModel
table.setMode(new ResultSetTableModel());
实在找不到是怎么回事

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧