Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich moechte gerne das mein applet eine stand-alone anwendung wird in gestallt einer ausführbaren jar datei
ich weiss das applets eigentlich nur in browsern leben, aber mein proffessor will das nich wissen^^
das muss irgendwie gehen das man ein applet in eine ausführbare jar datei umwandeln kann, notfalls muss man da eine main class reinsetzen (das geht irgendwie auch)
Eine Möglichkeit:
1. Verlagere alles was dein Applet macht auf ein (J)Panel.
2. Schreibe eine (J)Frame, welches das neue (J)Panel anzeigt.
3. Schreibe eine Main-Klasse, welche das (J)Frame öffnet.
Ohne Main-Klasse kommst du garantiert nicht weiter.
Am Einfachsten dürfte es sein, wenn du im JApplet ein JPanel hast, auf dem deine Komponenten liegen, so brauchst du nur das JPanel einem JFrame hinzufügen.
Ganz im Gegenteil, Applet erbt von Panel, da kannst du das Applet so wie es ist in einen Frame setzen.
Du brauchst nur die Applet-Methoden aufrufen. Ich hab hier mal vor einiger Zeit sowas vorgstellt: http://www.java-forum.org/de/viewtopic.php?t=18372
run() und repaint() brauchst du nicht aufrufen, das sollte das Applet intern schon regeln.
Ansonsten siehts soweit, bis auf den zweimaligen setVisible(true)-Aufruf ganz OK aus.
Wenn du den Aufruf aus der initialize()-Methode entfernst, sollte es funktionieren. Komponenten die zur Laufzeit auf dem Frame hinzugefügt werden, werden erst durch den Aufruf von validate() sichtbar.
Kannste dir aber sparen, wenn du den Aufruf in initialize() entfernst.
wenn ich "this.setVisible(true);" aus der initialize() methode entferne kommt eine NullPointerException :bahnhof:
Exception in thread "main" java.lang.NullPointerException
at java.applet.Applet.getCodeBase(Unknown Source)
at java_pong2.JavaDrei.init(JavaDrei.java:87)
at java_pong2.Fenster.<init>(Fenster.java:36)
at java_pong2.Fenster.main(Fenster.java:24)
edit: was mir aufgefallen ist, bei deinem link weiter oben hast du in dem applet keinen thread gestartet, im gegensaz zu meinem, außerdem habe ich noch Runnable implementiert bei meinem applet
Die NullPointerException kommt sicher von einem Problem beim Einlesen von Bildern etc. Das müsstest du noch umbauen.
.:sonne:. hat gesagt.:
edit: was mir aufgefallen ist, bei deinem link weiter oben hast du in dem applet keinen thread gestartet, im gegensaz zu meinem, außerdem habe ich noch Runnable implementiert bei meinem applet
Beide sind ein und die selbe Jar-Datei. Nur das Applet wird mit der Webseite geladen und die Applikation kann nach dem Download per Doppelklick gestartet werden.
Sicher, aber alle führen für Applets zum selben Ergebnis. Es gibt zwar verschiedene Variationen, in Abhängigkeit des Speicherorts des Bildes, aber es ist immer die gleiche Methode, die die Arbeit erledigt. Applets laden Bilder immer mit der getImage()-Methode aus Applet.
Dies ist ein Sonderfall. Daher musst du einen kleinen Kniff anwenden. Du implementierst eine Methode mit einem beliebigen Namen, ich wähle jetzt mal initialize() und setzt dort den Code hinein, für den Fall, dass das Applet in einen Frame eingebaut wird. Ein Frame ist eine Applikation, er kann Panels eingefügt bekommen. Ein Applet erbt auch von Panel und ist demnach auch ein Panel.
Statt init() lässt du nun vom Frame initialize() im Applet aufrufen, und kannst so eine andere Variante des Bilderladens ausführen. Hier mal ein Beispiel für eine initialize()-Methode, die die Bilder für eine Applikation laden kann.
Code:
public void initialize() {
image = Toolkit.getDefaultToolkit().getImage("bild.jpg");
}