如何使用mysql在jtable中显示Url图像?

时间:2014-05-08 18:44:51

标签: java mysql swing 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());

        }

    }

1 个答案:

答案 0 :(得分:0)

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

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

这只是DefaultTableModel类的一个片段,有关详细信息,请参阅java文档。

你也可以参考这个做类似事情的例子,可以帮到你

Most simple code to populate JTable from ResultSet