Tjena
Jag håller på att göra en liten applet som ska kunna visa en bild i en panel.
Eftersom det tyvär inte går att skriva panel.add(Image bild);, så gjorde jag en egen klass som skulle visa en bild och kunna läggas till i en Panel.
PanelImage.java
import java.awt.*;
public class PanelImage extends Canvas {
private String url1 = "C:\\Program\\jakarta-tomcat-4.0.1\\webapps\\ROOT\\online\\img\\";
private String url2 = "http://localhost/online/img/";
private Image bild;
private Toolkit tk = Toolkit.getDefaultToolkit();
public PanelImage(String s) {
setImage(s);
}
public void setImage(String s) {
bild = tk.getImage(url1 + s + ".gif");
}
public void paint(Graphics g) {
g.drawImage(bild,5,5,this);
}
}
Om jag tittar på sidan genom att skriva in adressen till dokumentet som startar appleten på hårddisken (C:\Program\jakarta-tomcat-4.0.1\webapps\ROOT\online\index.html) så fungerar koden i PanelImage.java (bilden som ska visas syns), förutsatt att jag använder url1 i PanelImage.java.
Om jag däremot ska titta på sidan genom tomcat (http://localhost/online/index.html) och använder url2 så syns inte bilden!
Jag får följande felmeddelande:
java.security.AccessControlException: access denied (java.io.FilePermission http://localhost/online/img/baksida.gif read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.lang.SecurityManager.checkRead(SecurityManager.java:887)
at sun.awt.SunToolkit.getImageFromHash(SunToolkit.java:408)
at sun.awt.SunToolkit.getImage(SunToolkit.java:422)
at PanelImage.setImage(PanelImage.java:13)
at PanelImage.<init>(PanelImage.java:10)
at KeffJavaWindow.<init>(KeffJavaWindow.java:32)
at KeffJavaKlient.action(KeffJavaKlient.java:17)
at java.awt.Component.handleEvent(Component.java:5262)
at java.awt.Component.postEvent(Component.java:3806)
at java.awt.Component.postEvent(Component.java:3816)
at java.awt.Component.dispatchEventImpl(Component.java:3542)
at java.awt.Component.dispatchEvent(Component.java:3367)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:144)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)
Varför får jag inte se bilden? Den ligger ju på samma server, och då ska man ju vad jag förstår få ladda ner filer.
Jag har gjort en applet som visar en bild genom paint() i klassen som "extends" Applet, och då fungerar det att visa bilden.