J
Jank90
Gast
Hi an alle,
in meinem Programm wird ein Bild angezeigt, welches nach einer bestimmten Zeit durch ein anderes ersetzt wird. Das Bild zeige ich momenten in einem JLabel an und ändere es durch:
label.setIcon();
Dadurch entsteht aber manchmal so ein hässlicher blink Effekt. Ich denke das kommt daher, dass das alte Icon erst entfernt wird und dann ein neues hineingezeichnet wird. Zwichendrin ist das Label also kurz leer und daher sieht es dann aus als ob es blinken würde.
Ich habe auch versucht zwei Label zu machen, die direkt übereinander liegen und unterschiedliche Bilder enthalten. Eins ist unsichtbar. Nach einer Zeit habe ich dieses dann sichtbar gemacht und das vorher sichtbare unsichtbar, aber es trat wieder der gleiche Effekt auf.
Es wär echt super, wenn mir jemand sagen könnte, wie ich es anstellen kann, das die Bilder ohne blinken wechseln.
Zur Erläuterung: Auf den Bildern ist ein Kreis abgebildet. Auf dem einen etwas größer als auf dem anderen. Der Hintergrund ist gleich, sodass der Kreis eigentlich nur größer werden sollte.
Beispielcode:
Vielen Dank schon mal
Jan
in meinem Programm wird ein Bild angezeigt, welches nach einer bestimmten Zeit durch ein anderes ersetzt wird. Das Bild zeige ich momenten in einem JLabel an und ändere es durch:
label.setIcon();
Dadurch entsteht aber manchmal so ein hässlicher blink Effekt. Ich denke das kommt daher, dass das alte Icon erst entfernt wird und dann ein neues hineingezeichnet wird. Zwichendrin ist das Label also kurz leer und daher sieht es dann aus als ob es blinken würde.
Ich habe auch versucht zwei Label zu machen, die direkt übereinander liegen und unterschiedliche Bilder enthalten. Eins ist unsichtbar. Nach einer Zeit habe ich dieses dann sichtbar gemacht und das vorher sichtbare unsichtbar, aber es trat wieder der gleiche Effekt auf.
Es wär echt super, wenn mir jemand sagen könnte, wie ich es anstellen kann, das die Bilder ohne blinken wechseln.
Zur Erläuterung: Auf den Bildern ist ein Kreis abgebildet. Auf dem einen etwas größer als auf dem anderen. Der Hintergrund ist gleich, sodass der Kreis eigentlich nur größer werden sollte.
Beispielcode:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test extends JFrame
{
public static void main(String[] args) {
JFrame frame = new JFrame();
JLabel bild1 = new JLabel(),
bild2 = new JLabel(),
sec = new JLabel();
ImageIcon a = new ImageIcon("a.gif"),
b = new ImageIcon("b.gif");
frame.setTitle("Gif Test");
frame.setSize(400,400);
frame.setLocation(376,232);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { System.exit(0); }
});
Container cp = frame.getContentPane();
cp.setLayout(null);
bild1.setBounds(0,0,400,200);
bild1.setIcon(a);
bild1.setVisible(true);
bild2.setBounds(0,0,400,200);
bild2.setIcon(b);
bild2.setVisible(false);
sec.setBounds(0,200,400,200);
sec.setText("Bild wechselt in...");
cp.add(bild1);
cp.add(bild2);
cp.add(sec);
frame.setVisible(true);
try
{
for(int i=3;i>=0;i--)
{
Thread.sleep(1000);
sec.setText(sec.getText()+" "+i);
}
// Erste Möglichkeit
bild1.setIcon(b);
// Zweite Möglichkeit
//bild2.setVisible(true);
//bild1.setVisible(false);
}
catch (InterruptedException e)
{
System.err.println(e);
}
}
}
Vielen Dank schon mal
Jan