Ciao ragazzi ,
non ho molta esperienza col java ma riesco a lavoricchiarci per fare
qualche programmino utile.
Mi sono imbattuto in un problemone gigantesco credo.
Sarebbe per me eccezionale riuscire a capire come si fa:
allora ho implementato (((((((((( DefaultTableCellRenderer ))))))))))
questo funziona non mi da errori...codice:class IconRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { final JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (value != null ) { try { ResultSet rs = pstmt.executeQuery(); if (rs.next()) { Blob blob = rs.getBlob(8); ImageIcon imageIcon = new ImageIcon( blob.getBytes(1, (int)blob.length())); int width = imageIcon.getIconWidth(); int height = imageIcon.getIconHeight(); if (width > 600 || height > 600) { double d = 100D / Math.max(width, height); width = (int)Math.round(width * d); height = (int)Math.round(height * d); Image img1 = imageIcon.getImage(); BufferedImage img2 = new BufferedImage( width, height, BufferedImage.TYPE_INT_RGB ); Graphics g = img2.getGraphics(); g.drawImage(img1, 0, 0, width, height, null); // g.drawLine(100, 100, 100, 100); imageIcon = new ImageIcon(img2); label.setIcon(imageIcon); } }} catch (Exception ex) { System.err.println(ex); } } return label; } }
poi ho questo :
e recupero i dati dal DB e popolo le celle cosi:codice:dati = getDati(); colonne= new Vector<String>(); colonne.add("Cognome"); colonne.add("Nome"); colonne.add("Indirizzo"); colonne.add("N-Telefono"); colonne.add("N-Cellulare"); colonne.add("N-Fax"); colonne.add("E-Mail"); colonne.add("Foto");
Adesso ho la classe - class IconRenderer extends DefaultTableCellRenderer - che mi recupera il blob e so per certo che funziona perchè anche ina ltri software recupero stupendamente i campi blob da mysqlcodice:public Vector getDati()throws Exception { Vector<Vector<String>> RecuperaDatiVettore= new Vector<Vector<String>>(); PreparedStatement pre = connection.prepareStatement("select * from jagenda"); ResultSet rs = pre.executeQuery(); while(rs.next()) { Vector<String> RecuperaDati= new Vector<String>(); RecuperaDati.add(rs.getString(1)); RecuperaDati.add(rs.getString(2)); RecuperaDati.add(rs.getString(3)); RecuperaDati.add(rs.getString(4)); RecuperaDati.add(rs.getString(5)); RecuperaDati.add(rs.getString(6)); RecuperaDati.add(rs.getString(7)); Qui dovrei recuparare il campo "8" che sarebbe la foto(CAMPO BLOB) COME POTREI FARE ? RecuperaDatiVettore.add(RecuperaDati); } return RecuperaDatiVettore; }
MA COME potrei fare a popolare la cella numero 8 della mia tabella con "IconRender" estensione della DefaultTableCellRederer ?
Ho letto e provato di tutto ma forse sono andato in confusione e non ci ho capito piu nulla.
Mi sono perso qui:
chi ha pazienza di leggersi tutto è mi sappia indicare come risolvere la cosa....gle ne sarei enormemente grato!codice:TableColumnModel columnModel = table.getColumnModel(); JTAB.setRowHeight(300); columnModel.getColumn(8).setPreferredWidth(200); columnModel.getColumn(0).setCellRenderer(new IconRenderer());
un saluto.

Rispondi quotando
