java - 如何使用mysql在jtable中显示Url Image?

标签 java mysql swing url

您好,我想打印到用作 URL 的表格图像中的单元格。我将 url 以文本形式存储在数据库表数据中。 我将用于打印其余数据的方法放在其他列中,我想添加带有图像链接的另一列。

任何帮助都会很好。

 public void SearchMovie() throws SQLException {

        try {
            Connection con = null;
            ResultSet rs = null;
            Statement st = null;

            String Genre = ComboGenero.getSelectedItem().toString();
            String Era = ComboEra.getSelectedItem().toString();
            String Clsssification = ComboClasification.getSelectedItem().toString();

            String sql = "select Poster,Title,Year,Country ,imdb ,Trailer from movie where Genre ='" + Genre + "'";

            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/whichmovie", "Asis", "dekrayat24");
            System.out.println("Conectado a la base de datos SQLite");

            st = con.createStatement();
            rs = st.executeQuery(sql);

            jTable1.setDefaultRenderer(Object.class, new IconCellRenderer());
            DefaultTableModel model = new DefaultTableModel();
            this.jTable1.setModel(model);


            // Donde 50 es el tamaño que querramos en la celda según lo q necesitemos
            jTable1.setRowHeight(55);
            jTable1.setCellSelectionEnabled(true);

            ResultSetMetaData rsMD = rs.getMetaData();
            int numcolumnas = rsMD.getColumnCount();

            for (int x = 1; x <= numcolumnas; x++) {
                model.addColumn(rsMD.getColumnLabel(x));

            }

            if (!rs.next()) {
                ResultadosLabel.setText("No Movies found ");
            } else {
                do {

                    Object[] fila = new Object[numcolumnas];
                    for (int i = 0; i < numcolumnas; i++) {
                        fila[i] = rs.getObject(i + 1);

                        byte[] imagedataCover = rs.getBytes("Poster");
                        format = new ImageIcon(imagedataCover);

                        byte[] imagedataCountry = rs.getBytes("Country");
                        format2 = new ImageIcon(imagedataCountry);

                        fila[0] = new JLabel(format);
                        fila[3] = new JLabel(format2);
                        ResultadosLabel.setText(i - 2 + " " + "Movies found ");
                    }
                    model.addRow(fila);
                    setAnchoColumnas();
                } while (rs.next());
                rs.close();
                st.close();
                con.close();

            }

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

        }

    }

最佳答案

定义表模型时需要定义列数 而不是使用 DefaultTableModel 的默认构造函数。您可以使用以下内容。

public DefaultTableModel(Object[][] data, Object[] columnNames) {
        setDataVector(data, columnNames);
}

这只是 DefaultTableModel 类的一个片段,请参阅 java 文档以获取更多信息。

您还可以引用这个示例,它执行类似的操作,可能会对您有所帮助

Most simple code to populate JTable from ResultSet

关于java - 如何使用mysql在jtable中显示Url Image?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23550074/

相关文章:

java - 运行 cucumber 测试改变变量?

mysql - 如何在 MySQL 中只记录原始查询?

php - 获取查询中带有限制的所有行

Java俄罗斯方 block 游戏: Having trouble visualizing how to move an object Piece of 4 distinct Tile objects

Java:使用图像作为按钮

java - 如何强制 JFrame 在移动时留在后台?

java - 这是在 lambda 函数内设置/删除 boolean 标志的最佳方法

java - 另一个 Ant + JUnit 类路径问题

java - 将 Akka HTTP 直接连接到 Akka 流

php - 在 protected 页面上使用 SQL 编辑数据库中的文本