java jtable mysql_java – 在JTable的单个列上显示来自MySQL数据库的图像

我正在尝试显示从blob数据类型的MySQL数据库中检索的图像.无法弄清楚导致图像列显示数据的问题是什么[B @ 29b8e4f7而不是图像图标.

DefaultTableModel model = new DefaultTableModel(new Object[]{

"image", "item_name", "quantity","price", "category", "color", "size"}, 0){

@Override

public Class> getColumnClass(int column) {

switch(column){

case 0: return ImageIcon.class;

default: return String.class;

}

}

};

myTable.setModel(model);

ResultSet rs = database.getRS();

int columns = rs.getMetaData().getColumnCount();

while(rs.next()){

Object[] row = new Object[columns];

for(int i = 1; i <= columns; i++){

row[i-1] = rs.getObject(i);

}

DefaultTableModel defmodel = (DefaultTableModel) tableItem.getModel();

defmodel.insertRow(rs.getRow()-1, row);

}

解决方法:

因为你使用了preparedstatement.setBlob(1,InputStream);为了存储图像,我必须假设您存储了物理图像文件/格式而不仅仅是像素数据.

您需要回读此图像格式并转换为Swing / Java支持的图像格式.

首先获取数据库字段的Blob引用…

Blob blob = rs.getBlob(1);

一旦你有一个Blob,你可以使用它的二进制InputStream并读取数据……

BufferedImage image = null;

try (InputStream is = blob.getBinaryStream()) {

image = ImageIO.read(is);

} catch (IOException exp) {

exp.printStackTrace();

}

现在,您可以使用新的ImageIcon(图像)将其设置为ImageIcon并将其放入您的表模型中…

标签:java,mysql,user-interface,swing,jtable

来源: https://codeday.me/bug/20190926/1820269.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值