 |
21.01.2006, 21:52
| Nach oben
#1 | | Neuer Benutzer
Registriert seit: 18.08.2005 Ort: Hildesheim
Beiträge: 14
| Problem bei der Einbindung eines Applets in HTML
Hi Leute!
Ich hab ein Problem: Ich hab ein Spiel als Java-Applet geschrieben, das funktioniert auch (fast) tadellos über Eclipse und NetBeans, aber ich bekomm das irgendwie nicht in ne HTML-Datei eingebunden. Mit dem <applet>-Tag und mit <object> funktioniert das nicht, er zeigt unten immer an, dass das Applet nicht geladen werden konnte. Könnt ihr mir helfen? Wenn es irgendwie hilf, könnte ich auch noch den Code posten. Ich danke schonmal im Vorraus!
MfG, exoskelett
|
| |
21.01.2006, 22:50
| Nach oben
#2 | | Oliver O.
Registriert seit: 17.08.2005
Beiträge: 426
|
Könnte helfen, ja...
|
| |
22.01.2006, 13:01
| Nach oben
#3 | | Neuer Benutzer
Registriert seit: 18.08.2005 Ort: Hildesheim
Beiträge: 14
|
OK, ist nen Pong-Spiel, nur halt mit Grafiken: PHP-Code: import java.awt.*; import java.applet.*; import java.util.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.*;
public class Main extends Applet implements Runnable, KeyListener { Graphics offscreenGraphics; Image offscreenImage; int x = 276; int y = 161; int status = 0; int y1 = 144; int y2 = 144; int p1 = 0; int p2 = 0; String mode = "Normal"; long speed = 10; Random xx = new Random(); int xz = xx.nextInt(2)+1; int yz = xx.nextInt(2)+1; Thread t = new Thread(this); Image ball; Image pong1; Image pong2; Image bg; String file = "lose.wav"; //AudioClip lose; //AudioClip pong; public void init() { this.setSize(573,342); this.setBackground(Color.black); this.addKeyListener(this); if(xx.nextInt(2)==1) { xz*=-1; } if(xx.nextInt(2)==1) { yz*=-1; } //lose = getAudioClip( getCodeBase(), file ); file = "pong.wav"; //pong = getAudioClip( getCodeBase(), file ); offscreenImage = createImage(573, 342); offscreenGraphics = offscreenImage.getGraphics(); t.start(); t.suspend(); offPaint(); } public void start() { } public void stop() { } public void paint(Graphics g) { if ( offscreenImage != null ) { g.drawImage( offscreenImage, 0, 0, this ); } } private void offPaint() { offscreenGraphics.clearRect(0,0, 573, 342); offscreenGraphics.setColor(Color.red); offscreenGraphics.drawLine(288, 0, 288, 342); offscreenGraphics.setColor( Color.white ); //offscreenGraphics.fillOval(x,y, 20,20); bg = getToolkit().getImage("bg.jpg"); offscreenGraphics.drawImage(bg,0,0,this); ball = getToolkit().getImage("ball.gif"); offscreenGraphics.drawImage(ball,x,y,this); pong1 = getToolkit().getImage("pong.gif"); offscreenGraphics.drawImage(pong1,0,y1,this); pong2 = getToolkit().getImage("pong.gif"); offscreenGraphics.drawImage(pong2,563,y2,this); offscreenGraphics.drawString(String.valueOf(p1), 10, 15); offscreenGraphics.drawString(String.valueOf(p2), 550, 15); offscreenGraphics.drawString("Modus: "+mode, 250, 15); offscreenGraphics.drawString("F1: Hilfe", 265, 340); } public void update( Graphics g ) { paint(g); } public void run() { while(true) { x+=xz; y+=yz; if(x<10) { if(y1-25<y && y1+50>y) { xz*=(-1); //pong.play(); } if(x<0) { punkt(2); } } if(x>540) { if(y2-25<y && y2+50>y) { xz*=(-1); //pong.play(); } if(x>550) { punkt(1); } } if(y<0) { yz*=(-1); } if(y>319) { yz*=(-1); } offPaint(); repaint(); try { t.sleep(speed); } catch(Exception e) {} } } public void keyPressed(KeyEvent event) { if(event.getKeyCode()==event.VK_SPACE) { if(status==0) { t.resume(); status=1; } else { t.suspend(); status=0; } } if(status==1) { if(event.getKeyCode()==event.VK_UP && y2>14 && xz>0) { y2-=15; } if(event.getKeyCode()==event.VK_DOWN && y2<276 && xz>0) { y2+=15; } if(event.getKeyCode()==event.VK_A && y1>14 && xz<0) { y1-=15; } if(event.getKeyCode()==event.VK_Y && y1<276 && xz<0) { y1+=15; } } else { if(event.getKeyCode()==event.VK_F1) { } if(event.getKeyCode()==event.VK_F2) { mode="Normal"; speed=10; offPaint(); repaint(); } if(event.getKeyCode()==event.VK_F3) { mode="Hard"; speed=0; } if(event.getKeyCode()==event.VK_F4) { p1 = 0; p2 = 0; } if(event.getKeyCode()==event.VK_ESCAPE) { System.exit(0); } } offPaint(); repaint(); } public void keyReleased(KeyEvent event) {} public void keyTyped(KeyEvent event) {} public void punkt(int p) { //lose.play(); if(p==1) { p1++; } else { p2++; } x = 276; y = 161; status = 0; xz = xx.nextInt(2)+1; yz = xx.nextInt(2)+1; if(xx.nextInt(2)==1) { xz*=-1; } if(xx.nextInt(2)==1) { yz*=-1; } t.suspend(); offPaint(); repaint(); } }
Ich habs leider nicht kommentiert, aber so kompliziert ist es ja auch nicht. Die paar auskommentierten Zeilen waren zur Soundausgabe da, aber ich hab die Sound-Dateien nicht mehr gefunden.
Geändert von exoskelett (22.01.2006 um 13:04 Uhr).
|
| |
22.01.2006, 13:14
| Nach oben
#4 | | Benjamin Klaile
Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.471
|
Hallo,
ich verschiebe das mal ins passende Forum.
Der Beitrag wurde verschoben, wegen...
... Postings im falschen Forum. Bitte beim nächsten Mal darauf achten.. verschoben |
| |
22.01.2006, 16:21
| Nach oben
#5 | | Oliver O.
Registriert seit: 17.08.2005
Beiträge: 426
|
Also hier ist ne html datei, die mein Borland JBuilder2005 bei jedem neuen Applet erstellt... das Applet läuft auch. Ich hoffe es hilft dir weiter
schade, man kann wohl keine html seiten hoch laden, dann schau dir mal das hier an: PHP-Code: <html>
<head>
<title>
HTML-Testseite
</title>
</head>
<body>
Main erscheint in einem Java-fähigen Browser.<br>
<applet
codebase = "."
code = "Main.class"
name = "TestApplet"
width = "400"
height = "300"
hspace = "0"
vspace = "0"
align = "middle"
>
</applet>
</body>
</html>
viel spaß
|
| |
22.01.2006, 17:00
| Nach oben
#6 | | Neuer Benutzer
Registriert seit: 18.08.2005 Ort: Hildesheim
Beiträge: 14
|
Ich weiß nicht mehr weiter, bei mir meckert er immer noch (sowohl mit Firefox als auch im IE), hier mal das, was in der Java-Konsole steht: Zitat:
Java Plug-in 1.5.0_06
Verwendung der JRE-Version 1.5.0_06 Java HotSpot(TM) Client VM
Home-Verzeichnis des Benutzers = C:\Dokumente und Einstellungen\Stefan
----------------------------------------------------
c: Konsolenfenster schließen
f: Objekte in Finalisierungswarteschlange finalisieren
g: Speicherbereinigung
h: Diese Hilfemeldung anzeigen
l: ClassLoader-Liste ausgeben
m: Speicherbelegung anzeigen
o: Protokollierung auslösen
p: Proxy-Konfiguration neu laden
q: Konsole ausblenden
r: Richtlinien-Konfiguration neu laden
s: System- und Bereitstellungseigenschaften ausgeben
t: Threadliste ausgeben
v: Thread-Stack ausgeben
x: ClassLoader-Cache löschen
0-5: Trace-Stufe auf <n> setzen
----------------------------------------------------
java.security.AccessControlException: access denied (java.io.FilePermission bg.jpg read)
at java.security.AccessControlContext.checkPermission (Unknown Source)
at java.security.AccessController.checkPermission(Unk nown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
at sun.awt.SunToolkit.getImage(Unknown Source)
at Main.offPaint(Main.java:75)
at Main.init(Main.java:57)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-Main.class" java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Un known Source)
at sun.plugin.AppletViewer.showAppletException(Unknow n Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.security.AccessControlException: access denied (java.io.FilePermission bg.jpg read)
at java.security.AccessControlContext.checkPermission (Unknown Source)
at java.security.AccessController.checkPermission(Unk nown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
at sun.awt.SunToolkit.getImage(Unknown Source)
at Main.offPaint(Main.java:75)
at Main.init(Main.java:57)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-Main.class" java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Un known Source)
at sun.plugin.AppletViewer.showAppletException(Unknow n Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "AWT-Shutdown" java.lang.IllegalThreadStateException
at java.lang.ThreadGroup.addUnstarted(Unknown Source)
at java.lang.Thread.init(Unknown Source)
at java.lang.Thread.<init>(Unknown Source)
at sun.awt.AppContext$CreateThreadAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.AppContext.stopEventDispatchThreads(Unknow n Source)
at sun.awt.AWTAutoShutdown.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-18" java.security.AccessControlException: access denied (java.io.FilePermission bg.jpg read)
at java.security.AccessControlContext.checkPermission (Unknown Source)
at java.security.AccessController.checkPermission(Unk nown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
at sun.awt.SunToolkit.getImage(Unknown Source)
at Main.offPaint(Main.java:75)
at Main.run(Main.java:122)
at java.lang.Thread.run(Unknown Source)
java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThread)
at java.security.AccessControlContext.checkPermission (Unknown Source)
at java.security.AccessController.checkPermission(Unk nown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at sun.applet.AppletSecurity.checkAccess(Unknown Source)
at java.lang.Thread.checkAccess(Unknown Source)
at java.lang.Thread.suspend(Unknown Source)
at Main.init(Main.java:56)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-Main.class" java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Un known Source)
at sun.plugin.AppletViewer.showAppletException(Unknow n Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.security.AccessControlException: access denied (java.io.FilePermission bg.jpg read)
at java.security.AccessControlContext.checkPermission (Unknown Source)
at java.security.AccessController.checkPermission(Unk nown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
at sun.awt.SunToolkit.getImage(Unknown Source)
at Main.offPaint(Main.java:75)
at Main.init(Main.java:57)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-Main.class" java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Un known Source)
at sun.plugin.AppletViewer.showAppletException(Unknow n Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.security.AccessControlException: access denied (java.io.FilePermission bg.jpg read)
at java.security.AccessControlContext.checkPermission (Unknown Source)
at java.security.AccessController.checkPermission(Unk nown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
at sun.awt.SunToolkit.getImage(Unknown Source)
at Main.offPaint(Main.java:75)
at Main.init(Main.java:57)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-Main.class" java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Un known Source)
at sun.plugin.AppletViewer.showAppletException(Unknow n Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-33" java.security.AccessControlException: access denied (java.io.FilePermission bg.jpg read)
at java.security.AccessControlContext.checkPermission (Unknown Source)
at java.security.AccessController.checkPermission(Unk nown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
at sun.awt.SunToolkit.getImage(Unknown Source)
at Main.offPaint(Main.java:75)
at Main.run(Main.java:122)
at java.lang.Thread.run(Unknown Source)
java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThread)
at java.security.AccessControlContext.checkPermission (Unknown Source)
at java.security.AccessController.checkPermission(Unk nown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at sun.applet.AppletSecurity.checkAccess(Unknown Source)
at java.lang.Thread.checkAccess(Unknown Source)
at java.lang.Thread.suspend(Unknown Source)
at Main.init(Main.java:56)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-Main.class" java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Un known Source)
at sun.plugin.AppletViewer.showAppletException(Unknow n Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.security.AccessControlException: access denied (java.io.FilePermission bg.jpg read)
at java.security.AccessControlContext.checkPermission (Unknown Source)
at java.security.AccessController.checkPermission(Unk nown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
at sun.awt.SunToolkit.getImage(Unknown Source)
at Main.offPaint(Main.java:75)
at Main.init(Main.java:57)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-Main.class" java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Un known Source)
at sun.plugin.AppletViewer.showAppletException(Unknow n Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source) | Kann man mit Eclipse oder mit NetBeans auch automatisch eine HTML-Datei erstellen lassen? Vielleicht muss man da irgendwie bestimmte Parameter angeben oder so.
|
| |
22.01.2006, 17:16
| Nach oben
#7 | | Benutzer
Registriert seit: 17.08.2005
Beiträge: 87
| Zitat: |
java.security.AccessControlException: access denied (java.io.FilePermission bg.jpg read)
| Deine getImage-Aufrufe gehen schief
|
| |
22.01.2006, 18:05
| Nach oben
#8 | | Neuer Benutzer
Registriert seit: 18.08.2005 Ort: Hildesheim
Beiträge: 14
|
Aber die Grafiken sind im selben Ordner wie die HTML-Datei. Oder müssen die woanders hin?
|
| |
22.01.2006, 20:39
| Nach oben
#9 | | Oliver O.
Registriert seit: 17.08.2005
Beiträge: 426
|
so wie du es geschrieben hast, müssen sie zum Applet und zu HTML-Datei
|
| |
23.01.2006, 21:21
| Nach oben
#10 | | Neuer Benutzer
Registriert seit: 18.08.2005 Ort: Hildesheim
Beiträge: 14
|
Die Dateien sind alle in einem Ordner, ich kann mir irgendwie nicht vorstellen, dass es daran liegt.
|
| |
24.01.2006, 00:41
| Nach oben
#11 | | Sesselkleber
Registriert seit: 17.01.2005
Beiträge: 575
|
Hallo,
das mit den Laden von Grafiken bei Applets ist manchmal etwsa tricky.
Versuch mal wie folgt (entsprechend anpassen Code: Image pong1 = getToolkit().getImage(getCodeBase() + "pong.gif");
oder Code: Image pong1 = getToolkit().getImage(getCodeBase() + "/pong.gif");
Gruß
Sparrow
|
| |
24.01.2006, 17:40
| Nach oben
#12 | | Neuer Benutzer
Registriert seit: 18.08.2005 Ort: Hildesheim
Beiträge: 14
|
Also bei mir funktioniert dann gar nichts mehr, d.h. er zeigt die Bilder nirgends mehr an, nicht in Eclipse und NetBeans und auch nicht im Browser, dort erscheint wieder die Fehlermeldung. Vielleicht liegts auch an meinem PC, wenn einer von euch mal Zeit hat, kann ers mal ausprobieren, ich hab die Versionen für Eclipse und für NetBeans angefügt.
Wer nichts von beiden hat, kann sich die Eclipse-Version runterladen, und dann die Bilder und den Quellcode (aus Main.java) kopieren.
Ich wäre euch sehr dankbar, wenn wir das noch hinbekommen.
|
| |
24.01.2006, 18:13
| Nach oben
#13 | | Oliver O.
Registriert seit: 17.08.2005
Beiträge: 426
|
es läuft per eclipse bei mir wunderbar... dann hab ich eine html-datei erstellt und es laufen lassen, läuft auch aber ich hab was geändert: Code: public void init() {
String path = ""; //der path zu dem ornder, indem die bilder liegen
this.setSize(573,342);
this.setBackground(Color.black);
this.addKeyListener(this);
if(xx.nextInt(2)==1) {
xz*=-1;
}
if(xx.nextInt(2)==1) {
yz*=-1;
}
//lose = getAudioClip( getCodeBase(), file );
file = "pong.wav";
//pong = getAudioClip( getCodeBase(), file );
offscreenImage = createImage(573, 342);
offscreenGraphics = offscreenImage.getGraphics();
bg = getToolkit().getImage(path + "/bg.jpg");
ball = getToolkit().getImage(path + "/ball.gif");
pong1 = getToolkit().getImage(path + "/pong.gif");
pong2 = getToolkit().getImage(path + "/pong.gif");
t.start();
t.suspend();
offPaint();
}
und hab das mit getToolkit().getImage() aus der offPaint() methode raus genommen... warum waren die eigendlich da drin?? willst du jedes mal, wenn du malst die bilder neu laden??
|
| |
24.01.2006, 18:45
| Nach oben
#14 | | Neuer Benutzer
Registriert seit: 18.08.2005 Ort: Hildesheim
Beiträge: 14
|
Vielen, vielen Dank, es läuft endlich, ich weiß auch nicht, was ich mir dabei gedacht habe, war bestimmt dadurch auch langsamer.
EDIT: Hab nochmal ne Frage: Manchmal verschwindet die Transparenz bei den Gifs, kann man das irgendwie verhindern? (bei png ist es noch schlimmer, da verschwindet immer die Transparenz nach kurzer Laufzeit, bei den Gifs ist es nur manchmal)
Geändert von exoskelett (25.01.2006 um 18:38 Uhr).
|
| | |