Ciao a tutti. Ho un problema per quanto riguarda la visualizzazione di una immagine in una jLabel. L'immagine deve essere caricata nella label quando si verifica il click del mouse sul relativo item della jList. Questa però deve prima essere ridimensionata ai valori della label e poi visualizzata su di essa. Il problema sta nel fatto che ad un primo click sulla lista l'immagine viene caricata con le dimensioni originali; spostandosi un un altro item e tornando su quello desiderato l'immagine viene caricata correttamente. In debug non funziona sempre, per questo non sono sicuro sia un problema di tempi di caricamento dell'immagine in memoria o di ridemensionamento. Però non sono esperto, anzi.
posto di seguito il codice.
codice associato al click sull'item della jList:
parte di codice che ridimensiona l'immagine:codice:private void visualizzaImmagine(java.awt.event.MouseEvent evt) { Immagine img = new Immagine(selectedAlbum.getPath(),jList1.getSelectedValue().toString(), selectedAlbum.getIdAlbum()); Icon i = img.resize(null); lblImage.setIcon(i); }
Grazie per l'aiuto!codice:public Icon resize(){ //img è una variabile di tipo Image this.img=java.awt.Toolkit.getDefaultToolkit().getImage(completePath); int w, h, perc; perc = 90; h = img.getHeight(null); w = img.getWidth(null); h = img.getHeight(null); while (h>320 && w>379) { perc -= 10; h = img.getHeight(null) * perc / 100; w = img.getWidth(null) * perc / 100; } Image i=img.getScaledInstance(w,h,Image.SCALE_FAST); Icon icon = new ImageIcon(i); return icon; }![]()

Rispondi quotando