Resourcen aus Archiv laden?
-
Hallo,
Ich habe ein Appet incl. alle Dateien in eine jar gepackt.
Darunter auch eine Bilddatei. Die möchte ich als BitmapComponent in ein Panel einfügen.
Solange alles nicht gepackt ist, funzt local ohne Probleme.(auf dem Webserver nicht)
Wird der Applet von der jar Archive geladen, wird das Bild auch local nicht angezeigt.
Habe schon folgendes probiert:URL bildAdresse = this.getClass().getResource("titel.jpg"); String string = bildAdresse.getPath(); pane.add(new BitmapComponent(string), BorderLayout.CENTER); System.out.println( "BildAdresse: " + string);
Console meldet :
BildAdresse: file:/D:/java/workspace/TrailApplet/trail.jar!/titel.jpg
Pfad ist korrekt, der Name der Datei auch. Die titel.jpg liegt in Hauptordner der jar Datei, meine applet.class auch. Die Manifest Datei aus trail.jar in Ordner: META-INF enthält den Eintrag:
Name: titel.jpg
SHA1-Digest: Afl/KKrLA12evbBUtdLoehtFqmQ=scheint alles in Ordnung zu sein (meiner Meinung nach, bin aber in Java noch lange kein Profi)
Hat jemand Idee, wieso es nicht funktioniert??Roman
-
Wahrscheinlich kann die Bitmap Component kein JPEG. Dazu musst du dir vom Betriebssystem den Loader holen. Google mal nach java und jpg oder so.
-
Wie ich schon geschrieben habe, solange das jpg Bild nicht in jar gepackt ist wird es korrekt angezeigt, es reicht schon:
pane.add(new BitmapComponent("./titel.jpg"), BorderLayout.CENTER);
Sieht so aus, als ob der Applet die Datei nicht finden kann, die Stelle ,wo es hin soll bleibt leer.
Das Problem liegt wahrscheinlich in der Handling von Archiven, aber da komme ich einfach nicht weiter. Ich kann mir einfach nicht vorstellen, dass so etwas ungewöhnlich ist, alle Dateien eines Projektes in ein Archiv zu packen, Bilder auch oder liege ich falsch? Falls doch, dann hilf mir bitte auf die Sprünge
Roman
-
Hi,
ich habe die Bilder aus meinem JAR Archiv immer in dieser Art geladen:
URL fooUrl = getClass().getResource("pics/foo.png"); ImageIcon fooIcon = new ImageIcon(fooUrl);
Gruss
haderlump22
-
das habe ich schon mal gesehen. Aber wie kann ich jetzt ImageIcon so casten, dass ich es als Component in ein Panel einfügen kann?
Roman
-
Hi,
in meinem Prog habe ich die Bilder (gif) an ein JLabel "geheftet".
Das JLabel habe ich dann einfach per <JFrame>.add(<JPanel>)
an das JFrame gebunden.eurol = new JLabel(new ImageIcon(getClass().getResource("images/euro.gif")), JLabel.CENTER); eurol.setBounds(100,20,81,84); ... //alle auf das hauptfenster setzen mainwindow.add(eurol); ...
-
Roman007 schrieb:
Aber wie kann ich jetzt ImageIcon so casten, dass ich es als Component in ein Panel einfügen kann?Roman
Casten? Ein Bild in eine Komponente? Das geht nicht weil Bilder und Komponenten nichts gemein haben. Du kannst dir höchstens eine Komponente schreiben, die ein Bild anzeigt. Etwa so:
class ImageComponent extends JComponent { private Image image; public ImageComponent(Image image) { this.image = image; setPreferredSize(new Dimension(image.getWidth(null), image .getHeight(null))); } public void paintComponent(Graphics g) { g.drawImage(image, 0, 0, null); } }
-
@haderlump22
Danke, so wie Du es gemacht hast funktioniert einwandfrei.Roman