Unterschied im Einfügen von Bildern in Applets vs Applications

Status
Nicht offen für weitere Antworten.

_fabi

Aktives Mitglied
Hallo zusammen!

ich habe ein paar Applications programmiert und wollte diese jetzt (für die Interneteinbindung) in Applets umwandeln. Ich habe dafür einfach die main() in eine init() umgewandelt und von Applet anstatt JFrame geerebt. Das hat auch gut funktioniert, das Applet läuft so auch bis auf ein Problem:
Ich kann keine Bilder mehr einlesen. D.h. wenn eine Fehlermeldung kommt (diese ist einfach ein gif-Bild) dann wird dieses Bild nicht richtig eingelesen. Als das Programm noch eine Application war, hat das wunderbar funktioniert und zwar so:

Java:
try {
 	        	    BufferedImage img1 = ImageIO.read(new File("Fehlermeldung001.gif"));
  	        	    g.drawImage(img1, 0, 0, null);
  	        	    
  	        	} catch (IOException e2) {
  	        		throw new RuntimeException("Fehler beim Laden der Bilddatei!", e2);


Jetzt ist meine Frage, wie ich das bei Applets mache, denn die dateien sind dort wo sie hingehören, sonst würde es ja auch bei der Application nicht funktionieren. Ich hab zuerst im Internet bissl geschaut, aber was ich da gefunden habe hat nicht wirklich geholfen. Es wurde z.B. mal empfohlen das so zu machen:

Java:
Image img = getImage(getCodeBase(),"Karte.jpg");

aber auch das funktioniert nicht.
Wäre sehr nett, wenn mir jemand helfen könnte, vielen Dank!

Fabi
 
Also bei mir funktioniert das Laden mit
Java:
Image img = getImage(getCodeBase(),"Karte.jpg");

fehlerfrei

Der Unterschied zwischen Applet und Applikation ist, das ein Applet in einer "Sandbox" läuft, das heißt ein Applet darf nicht direkt auf das Filesystem zugreifen.

Warum bei dir das Laden jetzt nicht geht kann ich so nicht sagen, dafür hab ich zu wenig info
 
hmm... also bei mir funktioniert das ned.

ich zeichne das bild dann mit
Java:
g.drawImage(img1, 0, 0, null);
aber es hat dann nichts gezeichnet. dann habe ich auch alles versucht was hier so steht:
java - getCodeBase() - CodingForums.com

aber auch das hat nicht geklappt.
Wenn es hilft, dann kann ich auch den ganzen Code posten, aber der is halt ziemlich lang...

lg und vielen Dank für eure Zeit!

fabi
 
Versuch einfach ein kleines Beispiel-Applet zu schreiben, wo du nur ein Bild lädst und dieses dann am Bildschirm zeichnest, wenn das auch nicht geht, dann poste mal den Code vom Bsp-Applet und wir können dann mal schaun wo dein Fehler liegt.

Wenn dein bsp-Applet funktioniert schau mal was du dort anders machst als in deinem wirklichem Applet.
 
hmm... also ich hab jetzt mal ein kleines Programm geschrieben, bei dem ich das Bild so einbinde wie ich es in dem Original mache:

Java:
import java.awt.Graphics;
import java.awt.Image;

import javax.swing.JApplet;
import javax.swing.JPanel;


public class Test extends JApplet {
       
public Test(){
	getContentPane().add(pic, BorderLayout.CENTER);
	}

public void init(){
		
		Test 	picture = new Test();
				picture.repaint();
	}
	JPanel pic = new JPanel(){
	  
	    protected void paintComponent(Graphics g) {
	           super.paintComponent(g);
	           Image img1 = getImage(getCodeBase(), "Variable.gif");
	           g.drawImage(img1, 0, 0, null);
	           getContentPane().repaint();

		}//paintComponent
	};//pic

}

Eigentlich steht der meiste Text dann in der Klasse Test, aber das hab ich jetzt alles mal weggelassen (hier werden normalerweise Slider, etc. gezeichnet) und die Bilder habe ich gezeichnet dadurch dass ich die Paint-Methode überschreibe (habe ich irgendwo mal so in einem Tutorial gesehen, wenn es andere Wege gibt die nicht so umständlich sind sagts mir bitte, ich weiss es nicht besser)

Die Zeichnung Variable.gif liegt bei mir im selben Ordner wie die Ordner "bin" "src" und die Dateien ".classpath" und ".project". Wenn ich es als Application starte (dann mit einer try-catch-Schleife) dann klappt das wunderbar wie gesagt.

Hoffe ich hab mich so jetzt deutlich ausgedrückt, wenn nicht, dann fragt mich was noch wichtig ist, werde dann auch ganz schnell antworten (und ned so lang brauchen wie hier jetzt).

Vielen Dank für eure Mühen,
schönen Abend noch,

Fabi
 
Zuletzt bearbeitet:
In deiner Applet-Version gehört die Grafikdatei (so wie du es angegeben hast) ins Verzeichnis deiner class-Datei des Applets.
 
Vielen Dank L-Ectron X!

genau das war das Problem, jetzt funktioniert es. Vielen vielen Dank!

eine kleine Frage hätte ich noch: gibt es irgendwie die Möglichkeit, einen Slider zwar anzuzeigen, aber zu deaktivieren und vll. deshalb nur so schattiert anzuzeigen?

hab da in der javadoc nix gefunden, aber vll gibt es ja eine Möglichkeit...
Vielen Dank nochmal,
lg

fabi
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben