java - 根据数据库值动态加载jTable中的Image

标签 java swing dynamic jtable

我正在尝试根据数据库值在 jTable 中加载图像。

String query = "SELECT ID, CATEGORY FROM TATTOO_LIB ORDER BY ID DESC";
try {
    conn = new data.connection().db();
    stmtt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    rs = stmtt.executeQuery(query);
    while (rs.next()) {

        //I donot know how to write these lines here...

        File f = new File("C:/img/" + rs.getString(1) + ".jpg");
        ImageIcon icon = new ImageIcon(f);
        model.addRow(new Object[]{icon, rs.getString(1), rs.getString(2)});


    }
} catch(SQLException e ) {
    JOptionPane.showMessageDialog(null, "Error In Connection!!");
} finally {
    try {
        stmtt.close();
        rs.close();
        conn.close();
    } catch (SQLException e) {
    }

}

如何根据数据库值在第一列中加载图像。 我试图关注thisthis 。但我在某个地方迷路了。请帮忙。

最佳答案

重写表模型的getColumnClass(),以便正确呈现ImageIcon。查看更多How to Use Tables - Concepts: Editors and Renderers

    DefaultTableModel model = new DefaultTableModel(colNames, 0) {
        @Override
        public Class<?> getColumnClass(int col) {
            switch(col) {
                case 0: return ImageIcon.class;
                default: return String.class;
            }
        }
    };

此外,ImageIcon 不接受File 参数。您可以使用ImageIO.read()来获取Image来传递给ImageIcon

File f = new File("C:/img/"+rs.getString(1)+".jpg");
Image image = ImageIO.read(f);
ImageIcon icon = new ImageIcon(image);

可以只需将字符串文件路径传递给ImageIcon,但ImageIO会在路径不正确时抛出异常,即有帮助

您可能还需要相应地设置行高和列宽

table.setRowHeight(height);
TableColumn column = table.getColumn("ColumnIdentifier");
column.setWidth(150);

关于java - 根据数据库值动态加载jTable中的Image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23519728/

相关文章:

java - java字符串到json对象的转换

java - ModelAndView 和 ModelMap 有什么区别?

java - 如何防止我的 JScrollPane/JTextArea 超出包含的 JTabbedPane?

java - 如何在同一个jframe中管理多个面板?

java - 在面板上绘制 JTable 行和列

c# - 如何在 C# 中实现动态 OData 客户端?

c++ - 如何使未确定大小的多维数组成为 C++ 中类的成员?

java - Hibernate CollectionOfElements EAGER 获取重复元素

java - 加载文件后如何刷新 ChartPanel 类中的图表?

javascript - 有没有办法将数组的变量名打印为字符串? (JavaScript)