Ist Java eigenwillig!?!
-
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); } }
-
Weil du keinen MediaTracker angibst. Du muss statt
g.drawImage(image, 0, 0, null);
das hier schreiben:
g.drawImage(image, 0, 0, this); //this weißt auf die Component, die ien MediaTracker ist
Ach so, wenn ich antworten schreibe, tue ich das so, dass menschen mit dem seklben Problem meine antworten finden ohne die Frage nochmal zu stellen, dien E-Mail Adresse brauche ich also nich