[英]how to display image from database in MySQL into jTable in java?
在我正在处理的一个项目中,我有 showStudents.java,它使我能够在 jTable swing 组件中查看数据库中的所有学生。 jTable 正确显示,除了图像显示为
5 Debebe Gemesa 2020-02-07 Adama AB 0956852145 1 [B@522d8811
6 Samuel Gemeda 2020-02-05 Bahir Dar A+ 0986451278 1 [B@3330a9d5
最后一列应该是图像列。 在数据库中,我有学生表的以下值
6 Samuel Gemeda 2020-02-05 Bahir Dar A+ 0986451278 1 [BLOB - 32 B]
我在我的 showStudents.java 中有这个方法,它使我能够查看我的数据库中的所有列。
public void showRecord(){
try {
stmt = conn.createStatement();
String sql = "SELECT * FROM STUDENT";
ResultSet rs = stmt.executeQuery(sql);
jTable1.setModel(DbUtils.resultSetToTableModel(rs));
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
如果要使用 DbUtils,则需要使用自定义渲染器来显示数据。 也就是说,您需要将Blob
转换为ImageIcon
并将Icon
添加到JLabel
。 每次渲染表格的单元格时都会进行这种转换,这不是很有效。
阅读 Swing 教程中关于如何使用渲染器的部分,了解更多信息和工作示例以帮助您入门。
或者另一种方法是不使用 DbUtils。 相反,您自己将数据库中的数据读入DefaultTableModel
。 这种方法的优点是你创建了ImageIcon
一次,当数据加载时,然后你使用JTable
的默认 Icon 渲染器来显示 Icon。
有关将数据直接读入表模型的示例,请参阅: 如何将 DefaultTableModel 对象的数据放入 DefaultTableModel 的子类中。
您需要修改代码以将 Blob 转换为最后一列的ImageIcon
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.