gpt4 book ai didi

java - 在 JTable 的单列上显示 MySQL 数据库中的图像

转载 作者:行者123 更新时间:2023-11-29 12:14:55 25 4
gpt4 key购买 nike

我正在尝试显示从 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();
}

现在,您可以使用 new ImageIcon(image) 将其设为 ImageIcon 并将其放入表格模型中...

关于java - 在 JTable 的单列上显示 MySQL 数据库中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29983710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com