Bilder im JApplet -> paintComponent in JPanel

Sladda

Mitglied
Hallo allerseits.

Ich habe ein JApplet und möchte in ihm Bidler laden.
Das tue ich wegen der Sicherheitsbeschränkungen vom Applet, indem ich ein neues JPanel erstelle, bei dem die paintComponent-Mehode überschrieben wird und zwar so, dass dort das Bild gemalt wird:
Code:
public class ImagePanel extends JPanel {
	
	String path;
	Applet p;
	int x,y,w,h;
	Image img;
	
	public ImagePanel(String path, Applet p,int x, int y,int width, int height){
		this.path = path;
		this.p = p;
		this.x = x;
		this.y = y;
		this.w = width;
		this.h = height;
		this.setSize(this.w, this.h);
		img = p.getImage(p.getCodeBase(),this.path);
		this.setVisible(true);
	}

	protected void paintComponent(Graphics g){ 
		super.paintComponent(g); 		
		if(img != null){
			g.drawImage(img,x,y,p);
		}
		else
			System.out.println(this.path+" kann nicht geladen werden");
    } 	
}
Im JApplet in der init-methode mache ich dann folgendes:
Code:
ImagePanel a = new ImagePanel("pics/a.jpg",this,200,200,50,50); 
this.getContentPane().add(a);

Außerdem werden im Applet in der init-methode noch weitere JButtons, JTextareas usw erstellt. Diese werden auch alle wunderbar angezeigt.

Nur leider werden meine Bilder im ImagePanel nicht angezeigt, bzw. das ganze ImagePanel wird nicht angezeigt (eins von beidem !?) Der Pfad zum Bild stimmt und das img ist nicht null!

Was mache ich bloß falsch ?

Vielen Dank!
Sladda
 
Moin,

wo liegt denn das Bild?
Auf'm Server in einem Verzeichnis oder in einer JAR mit dem Applet zusammen?
Denn beide benötigen unterschiedliche Dateizugriffe, um das Bild zu laden.

Gruß,
Xan
 
hi!

Das bild liegt im gleichen Ordner wie die .class datei, die im applet geladen wird und die html-datei... deswegen nehme ich auch getCodeBase() und das funktioniert eigentlich auch. Der Pfad der gefunden wird stimmt und das img ist nicht null!
Es wird wohl offenbar einfach nur nich angezeigt... :(
 
Moin,

also die Variante über Applet.getImage() habe ich auch noch nicht gesehen.
Ich nutze wenn dann meistens:
Java:
img = Toolkit.getDefaultToolkit().getImage("pics/a.jpg")
// beziehungsweise
img = Toolkit.getDefaultToolkit().getImage(getClass().getResource("pics/a.jpg"))
Kannst es ja mal damit probieren.

Wenn das auch nicht geht, dann weiß ich auch nicht. Sicher, dass Dein Pfad korrekt ist?

Gruß,
Xan
 
Zuletzt bearbeitet:
Hi,

wenn Dein Bild am richtigen Platz liegt, sollte das so funktionieren.
Lass Dir mal die CodeBase ausgeben und schau, ob Dein Bild wirklich dort liegt.

Java:
System.out.println(getCodeBase());

Gruß
joschi
 
Zurück