我创建了一个简单的应用程序来显示数据库中的图像。我在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());
}
2条答案
按热度按时间dkqlctbz1#
当我从表中检索图像时,它只包含:“javax.swing。imageicon@2143ca6".
jtable的默认呈现器只调用对象上的tostring()方法,这样您就可以看到imageicon的tostring()。
你需要覆盖
getColumnClass(...)
你的方法TableModel
(或JTable
)返回Icon.class
,则该表将使用图标呈现器。有关详细信息,请阅读swing教程中有关使用渲染器/编辑器的部分。
d8tt03nd2#
试试这个