Image wartet nicht
-
So, ich versteh es einfach nicht - wo ist der Fehler. Schaut mal folgende von JButton abgeleitete Klasse an. Ist ja soweit alles alles in Ordnung nur wird das Bild erst dargestellt wenn ich die Zeichenfläche durch überfahren mit Maus invalidier. Dabei wird paint() doch schon 2mal bei mir aufgerufen bevor ich irgendwas mach (hab dafür g.drawString(i,10,10); eingebaut. Ich hab da so Ahnung: Kann ja sein, dass das Bild nicht dargestellt wird, weil es noch nicht geladen ist, aber warum wartet das Prog nicht nach der Initalisierung von image, bevor es weiterläuft?
import javax.swing.JButton; import javax.swing.event.*; import java.awt.*; import java.net.*; /** * <p>Title: </p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2005</p> * * <p>Company: </p> * * @author not attributable * @version 1.0 */ public class GButton extends JButton { private URL myurl; private Image image; private int i=0; public GButton() { try { myurl = new URL("http://www.galileocomputing.de/openbook/javainsel4/common/galileocomputing_openbook.gif"); image = Toolkit.getDefaultToolkit().getImage(myurl); } catch (MalformedURLException ex) { } } public void paint( Graphics g ) { i++; if(image!=null) g.drawImage(image, 10, 10, null ); g.drawString(Integer.toString(i),10,10); } }
-
Probiers doch mal mit einem MediaTracker.
Glaub so :
MediaTracker tracker = new MediaTracker();
tracker.add(image);try
{
tracker.waitForAll()
}
catch(Exception e)
{
e.printStackTrace();
}