【问题标题】:How to retrieve image of type blob from MySQL in JTable using Java?如何使用 Java 从 JTable 中的 MySQL 检索 blob 类型的图像?
【发布时间】:2018-08-29 22:09:38
【问题描述】:

我创建了一个简单的应用程序来显示数据库中的图像。我在 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());
}

【问题讨论】:

标签: java mysql swing jtable


【解决方案1】:

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

JTable 的默认渲染器仅调用对象的 toString() 方法,因此您可以看到 ImageIcon 的 toString()。

您需要覆盖TableModel(或JTable)的getColumnClass(...) 方法以返回Icon.class,然后表格将使用图标渲染器。

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

【讨论】:

    【解决方案2】:

    试试这个

    Image im = ImageIO.read((ImageInputStream) new DefaultStreamedContent(new ByteArrayInputStream(imgData)));
    

    【讨论】:

    • 我正在尝试你的代码但不工作,我的问题是当我将 ImageIcon "newImageIcon" 添加到 Array "data []" ,并将 Array "data []" 添加到 Jtabel "tabelimage " ,因为JLabel“lblimage”显示图像检索数据库。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-05-06
    • 2018-06-08
    • 2013-09-29
    • 2018-04-23
    • 2013-10-25
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多