label mit bild aktualisieren/repainten/refreshen?

phase23

Grünschnabel
Hallo,

ich hab mir einen kleinen ImageSlider gebastel, das Problem ist, dass das label, auf das ich das Bild lege das neue Bild nicht anzeigt, sonders das aktuell beibehält. Die Methode Test() bekommt ein string aus einer anderen Klasse übergeben, ist ein Dateiname... auf Kopfdruck soll nun aus der arraylist der nächste Dateiname genommen werden und das neue Bild angezeigt werden.

und das ist mein Problem, das neue wird nicht aktualisiert



Code:
public class ImageSlider extends javax.swing.JFrame {
 
    private String filename;
    //final static ArrayList<String> liste = new ArrayList<String>();

    public ImageSlider() {
       
    }
    
    public void Test(String filestr){
       
       filename = filestr; 
       jPanel1.setLayout(new FlowLayout());
       ImageIcon bigpic = new ImageIcon("c:/testbilder/" + filestr);
       bigpic.setImage(bigpic.getImage().getScaledInstance(500,500,Image.SCALE_DEFAULT));
       JLabel piclab = new JLabel(bigpic);
       jPanel1.add(piclab);
    }
    
   private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         

       int listindex = IID.liste.indexOf(filename);
       String filestr = IID.liste.get(listindex+1);
       Test(filestr);
     }

Wäre nett, wenn jemand helfen könnte.

Gruss phase
 
Du fügst Deinem "jPanel1" ständig neue Labels hinzu, entfernst aber die alten nicht. Sowieso wär's schöner, eine eigene Klasse zu haben, die rein für das Anzeigen eines Bilds zuständig ist. Die ist bspw. abgeleitet von JPanel und überschreibt deren paint-Methode, um das Bild anzuzeigen. Fürs Setzen des Bilds schreibst Du eine Methode setImage(Image img) o.ä., die ruft dann anschließend repaint() auf, um das neue Bild auch gleich anzuzeigen.
 
Nachdem ich gestern nicht weiter kam, hab ich das schon umgeschrieben und es macht was es soll! Hab das letztendlich so umgesetzt, wie du das beschrieben hast. Also trotzdem vielen Dank.

mfg phase
 
Zurück