Problem mit Applet
lima-city → Forum → Programmiersprachen → Java
applet
ausprobieren
aussehen
buchen
code
eingabe
eingabeaufforderung
ersatz
existieren
fehlen
genaue fehlermeldung
helfen
import
methode
not
nutzen
problem
run
standart
start
-
In meinem Java-Buch steht ein Beispielapplet, das ich ausprobieren möchte. Leider kann ich es nicht kompilieren. Scheinbar hat der Compiler Probleme mit dem static vor der paint Methode. Könntet ihr bitte mal einen Blich auf das Script werfen und mir helfen?!
import java.applet.Applet; import java.awt.Graphics; class HelloWorldApplet extends Applet { public static void paint(Graphics g) { g.drawString(\"Hello World!\", 50, 25); } }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das liegt vermutlich daran, dass das Applet von \"natur\" aus eine paint-Methode mitbringt und du diese nur überschreibst. Meines Wissens ist die halt nicht static, also kannst du sie auch nicht als static deklarieren. Lass es einfach weg.
-
habe ich schon ausprobiert. Dann kann ich das Applet zwar kompilieren aber beim Ausführen mit appletviewer kommt die Meldung, dass das Applet nicht initialisiert wurde.
Kann ja auch mal den Html-code posten:
<html> <body> <applet code = \"HelloWorldApplet.class\" width = 350 height = 300> </applet> </body> </html>
-
Das liegt aber nicht an der paint-Methode, sondern daran, dass dir die Standart-Applet-Methoden fehlen, also void init(){}, void start(){}, void stop(){} und void destroy(){}. Und ohne init() als \"constructor-Ersatz\" kanns gar nicht initialisiert werden.
Das kann dann z.B. so aussehen:
import java.applet.Applet; import java.awt.Graphics; class HelloWorldApplet extends Applet { public void paint(Graphics g) { g.drawString(\'Hello World!\', 50, 25); } public void init () { setLayout(new BorderLayout()); } public void start() { repaint(); } public void stop(){} public void destroy(){} }
Beitrag geändert: 5.6.2008 22:09:10 von alphara -
Laut meinem Buch sollte aber die paint methode reichen um das Applet zu initialisieren.
Wie würdest du denn den Code verändern damit es Funktioniert.
Danke schon mal. -
Das kann dann z.B. so aussehen:
import java.applet.Applet; import java.awt.Graphics; class HelloWorldApplet extends Applet { public void paint(Graphics g) { g.drawString(\'Hello World!\', 50, 25); } public void init () { setLayout(new BorderLayout()); } public void start() { repaint(); } public void stop(){} public void destroy(){} }
So sollte es funktionieren glaube ich. Habs nicht getestet.
-
Poste mal deine Eingabe in der Eingabeauffoderung und die genaue Fehlermeldung, denn so kann ich dir kaum helfen.
-
Das liegt aber nicht an der paint-Methode, sondern daran, dass dir die Standart-Applet-Methoden fehlen, also void init(){}, void start(){}, void stop(){} und void destroy(){}. Und ohne init() als \"constructor-Ersatz\" kanns gar nicht initialisiert werden.
Moin,
Es reicht vollkommen aus, nur die paint-Methode aufzurufen.
Alle anderen Methoden sind optional, immerhin existieren sie ja in der Super-Klasse.
Nur zum overriden sind diese zu nutzen, ansonsten füllen diese nur die Klasse mit Code, der eh nichts bringt.
import java.applet.Applet; import java.awt.Graphics; public class Test extends Applet { public void paint(Graphics g) { g.drawString(\"Hello World!\", 50, 25); } }
Gruß,
Puni
Beitrag geändert: 5.6.2008 22:32:31 von puni -
Poste mal deine Eingabe in der Eingabeauffoderung und die genaue Fehlermeldung, denn so kann ich dir kaum helfen.
Die eingabeaufforderung zeigt folgendes an:
Laden: HelloWorldApplet.class ist nicht öffentlich oder hat keinen öffentlichen Autor.
java.lang.IllegalAccessException: Class sun.applet.AppletPanel can not access a member of class HelloWorldApplet with modifiers \"\"
at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
zum Anzeigen gebe ich appletviewer HelloWorldApplet.html ein
zum kompilieren: javac HelloWorldApplet.java -
Es reicht vollkommen aus, nur die paint-Methode aufzurufen.
Alle anderen Methoden sind optional, immerhin existieren sie ja in der Super-Klasse.
Nur zum overriden sind diese zu nutzen, ansonsten füllen diese nur die Klasse mit Code, der eh nichts bringt.
Habs nochmal nachgelesen und du hast recht, die sind tatsächlich nicht abstrakt.
Beitrag geändert: 5.6.2008 23:07:13 von alphara -
Class sun.applet.AppletPanel can not access a member of class HelloWorldApplet with modifiers \"\"
Die Fehlermeldung sagt schon einiges aus.
Poste doch bitte nochmal Deinen Code. -
Der Java code:
import java.applet.Applet; import java.awt.*; class HelloWorldApplet extends Applet { public void paint(Graphics g) { g.drawString(\"Hello World!\", 50, 25); } }
Html Code:
<html> <body> <applet code = HelloWorldApplet.class width = 350 height = 300> </applet> </body> </html>
Beitrag geändert: 5.6.2008 22:52:56 von mannituhp -
Pack mal vor Dein class nen public, dann sollte das Problem behoben sein :)
-
OK danke hat funktioniert
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage