java - 如何使用Java从JTable中的MySQL检索blob类型的图像?

标签 java mysql swing jtable

我创建了一个简单的应用程序来显示数据库中的图像。我在 MySQL 数据库中有一个表,其中有一列 BLOB 类型。

当我从表中检索图像时,它只包含:“javax.swing.ImageIcon@2143ca6”。

我的代码:

String[] columntabelNames = {"Images"};
DefaultTableModel modelas = new DefaultTableModel(columntabelNames, 0);

Statement stmt = null;
ResultSet rs;

try {
  Connection conn = getConnection();
  stmt = (Statement) conn.createStatement();

  ResultSet rs1;
  rs1 = stmt.executeQuery("SELECT IMAGES_IMAGE FROM dc_images");
  if (rs1.next()) {

    byte[] imgData = rs1.getBytes("IMAGES_IMAGE");
    ImageIcon imagIcon = new ImageIcon(imgData);
    Image im = imagIcon.getImage();
    Image myImage = im.getScaledInstance(50, 50, Image.SCALE_SMOOTH);
    ImageIcon newImageIcon = new ImageIcon(myImage);
    lblimage.setIcon(newImageIcon);

    Object data[] = {newImageIcon};
    modelas.addRow(data);
  }
  tabelImage.setModel(modelas);

} catch (Exception ex) {
  System.out.println(ex.getMessage());
}

最佳答案

When I retrieve an image from the table it just contains: "javax.swing.ImageIcon@2143ca6".

JTable 的默认渲染器只是调用对象上的 toString() 方法,因此您将看到 ImageIcon 的 toString() 方法。

您需要重写 TableModel(或 JTable)的 getColumnClass(...) 方法以返回 Icon。 class,那么表格将使用图标渲染器。

阅读 Swing 教程中关于 Using Renderers/Editor 的部分了解更多信息。

关于java - 如何使用Java从JTable中的MySQL检索blob类型的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52078650/

相关文章:

java - 两个线程写入同一个 JTextArea

java - 为什么 setText 不更新 JLabel?

java - 图像是如何渲染到屏幕上的?

java - 以编程方式加载不同的 .class 文件运行 JUnit 测试

java - 尝试加载文件时出现 JMagick 错误 - UnsatisfiedLink

java - 如何从 java 代码创建*独立* linux 可执行文件

mysql - 通过 firstName 和 lastName 列搜索所有相似记录的 SQL 查询

mysql - 如何在sequelize ORM中使用从时间戳中选择和提取日期到月份和年份?

java - 如何从 Robert Sedgewick 的算法教科书中运行 Java 程序?

mysql - Nodejs中的多个mysql查询和回调