0

I am working on a socket programming assignment but I am facing a problem. I have to display an image from a path stored in a database. But instead of the image being displayed I am getting this message in the Jtable javax.swing.ImageIcon@2f672341. I wish to know the reason and how can I display the image property. I would really appreciate your helps. Thank you in advance.

public void show_Newadded() {
        try {
            toServerO.writeObject("shownewadded");
            toServerO.flush();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        ArrayList<Product> list = NewaddedList();
        DefaultTableModel model = (DefaultTableModel) tblhome.getModel();
        
        DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
        centerRenderer.setHorizontalAlignment( JLabel.CENTER );
        tblhome.getColumnModel().getColumn(0).setCellRenderer( centerRenderer );
        tblhome.getColumnModel().getColumn(1).setCellRenderer( centerRenderer );
        tblhome.getColumnModel().getColumn(2).setCellRenderer( centerRenderer );
        tblhome.getColumnModel().getColumn(3).setCellRenderer( centerRenderer );
        tblhome.getColumnModel().getColumn(4).setCellRenderer( centerRenderer );
        tblhome.getColumnModel().getColumn(5).setCellRenderer( centerRenderer );
        tblhome.getColumnModel().getColumn(6).setCellRenderer( centerRenderer );
        tblhome.getColumnModel().getColumn(7).setCellRenderer(tblhome.getDefaultRenderer(ImageIcon.class));
    
        Object[] row = new Object[8];
        model.setRowCount(0);
        for (int i = 0; i < list.size(); i++) {
            row[0] = list.get(i).getproductId();
            row[1] = list.get(i).getproduct();
            row[2] = list.get(i).getbrand();
            row[3] = list.get(i).getmodel();
            row[4] = list.get(i).getfeatures();
            row[5] = list.get(i).getstock();
            row[6] = list.get(i).getprice();
            String temp = list.get(i).getimagepath();

            ImageIcon ii = new ImageIcon(getClass().getResource("/products/product/" + temp));
            Image img = Toolkit.getDefaultToolkit().getImage(temp);
            Image resizedImage = ii.getImage();
            ii = new ImageIcon(resizedImage.getScaledInstance(160, 160, Image.SCALE_SMOOTH));
            row[7] = ii;
            model.addRow(row);
            tblhome.setRowHeight(150);
            tblhome.getColumnModel().getColumn(7).setPreferredWidth(150);
        }
    }

''' Sorry for not using the naming convention.

Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
  • 2
    Your table model needs to override the `getColumnClass(int column)` method of the AbstractTableModel class as per the answer in the duplicate. Also, regarding *"Sorry for not using the naming convention"* -- never apologize for this, but instead, follow the conventions. – Hovercraft Full Of Eels Jul 08 '21 at 18:37
  • Thank you for your reply, yes I will keep that in mind. – Neelkanth Mawood Jul 08 '21 at 18:47

0 Answers0