# Applet oder JApplet



## looogi (14. Apr 2006)

hallo,

habe mal ein ganz simples Applet gezeichnet, doch als ich anstatt Applet importierte, JApplet benuzte, funktionierte das Applet nich so wie ich will.??  benutzt man den JApplet für Applets? und wieso funktionierte es nicht..

Das Applet bewegt einen einfachen Ball nach rechts..


```
import java.applet.*;
import java.awt.*;

public class Ballbewegung1 extends [color=red](J)[/color]Applet implements Runnable
{
	// Initialisierung der Variablen
	int x_pos = 10;		// x - Position des Balles
	int y_pos = 100;	// y - Position des Balles
	int radius = 20;	// Radius des Balles

	public void init()
	{
		setBackground (Color.blue);
	}

	public void start ()
	{
		// Schaffen eines neuen Threads, in dem das Spiel läuft
		Thread th = new Thread (this);
		// Starten des Threads
		th.start ();
	}

	public void stop()
	{

	}

	public void destroy()
	{

	}

	public void run ()
	{
		// Erniedrigen der ThreadPriority um zeichnen zu erleichtern
		Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

		// Solange true ist läuft der Thread weiter
		while (true)
		{
			// Verändern der x- Koordinate
			x_pos ++;

			// Neuzeichnen des Applets
			repaint();

			try
			{
				// Stoppen des Threads für in Klammern angegebene Millisekunden
				Thread.sleep (20);
			}
			catch (InterruptedException ex)
			{
				// do nothing
			}

			// Zurücksetzen der ThreadPriority auf Maximalwert
			Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
		}
	}


	public void paint (Graphics g)
	{
		g.setColor  (Color.red);

		g.fillOval (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
	}

}
```


als ich das Applet dann mit Applet also AWT benutzte ging es aus der IDE eclipse heraus, mit dem Browser leider nicht...??

danke


----------



## lin (14. Apr 2006)

JApplet ist Swing, Applet AWT, mischen gibt ne emulsion :wink: -> http://www.java-forum.org/de/viewtopic.php?t=5113

wieso das applet im Browser nicht läuft, kann div. Ursachen haben,.. 
-> http://www.java-forum.org/de/viewtopic.php?t=4936


----------



## looogi (14. Apr 2006)

..ja ich weiß schin das ich die nicht mischen soll/kann, aber meine Frage war ob ich diesen Code auch mit JApplet benutzen kann?? .. wenn ja: warum zeichnet er den Ball nicht,, wenn nein: für was gibts dann JApplet, bzw. was habe ich im Code was nicht zu JApplet passt?

2. in eclipse geht es ja wenn ich das Applet starte, warum denn nicht mit dem appletviewer?? was für einen Fehler habe ich im code??... Den Artikel  http://www.java-forum.org/de/viewtopic.php?t=4936  hab ich ja gelesen, danach soll das problem im code liegen... folgende Fehlermeldung habe ich bekommen:



```
java.lang.UnsupportedClassVersionError: EinfscherBall (Unsupported major.minor v
ersion 49.0)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
3)
        at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:156)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
        at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:122)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
        at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:555)
        at sun.applet.AppletPanel.createApplet(AppletPanel.java:567)
        at sun.applet.AppletPanel.runLoader(AppletPanel.java:496)
        at sun.applet.AppletPanel.run(AppletPanel.java:293)
        at java.lang.Thread.run(Thread.java:536)
```


----------



## L-ectron-X (14. Apr 2006)

Du versuchst hier eine Klasse (EinfscherBall.class), die mit Java 1.5 kompiliert wurde mit einer früheren JRE-Version auszuführen.
Kompiliere mal die Klasse mit der Version, auf der sie ausgeführt werden soll.


----------



## looogi (16. Apr 2006)

..also

ich habe in eclipse java 1.5 eingestellt als SDK und als JRE habe ich den Pfad innerhalb des Jsdk also jre, richtig eingestellt. Auch die Umgebungsvariablen sind auf die version 1.5 eingestellt..

mit eclipse funktioniert das Applet immer.. einfach Run As ..Applet....

aber vin der Konsole.. kommt nun folgende Meldung: nach appletviewer applet.html


```
java.lang.NoClassDefFoundError: EinfscherBall (wrong name: ball1/EinfscherBall)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:1
4)
        at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:162)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:118)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:577)
        at sun.applet.AppletPanel.createApplet(AppletPanel.java:710)
        at sun.applet.AppletPanel.runLoader(AppletPanel.java:639)
        at sun.applet.AppletPanel.run(AppletPanel.java:319)
        at java.lang.Thread.run(Thread.java:595)
```


ich weiß sonst gerade echt nicht weiter..  achja ich benutzte den Firefox Browser..hmm Internet Explorer..ging ja auch nicht..


----------



## looogi (16. Apr 2006)

.. also nach langem  :###   hab ich nun endlich das Problem gefunden.. doch was ist die Lösung dazu..

ich hab ja das Applet, also die Klasse, in einem package, deshalb gings nicht.. im default package gehts... aber wieso..
 die Klasse ist im gleichen Ordner wie die Html Seite, und kompilieren kann ich die Klasse auch per Konsole..

was muss ich den genau ändern, dass es mit package läuft?

danke


----------



## L-ectron-X (16. Apr 2006)

Die HTML-Datei muss oberhalb der Package-Ordner gespeichert werden und die HTML-Datei muss angepasst werden.

```
<applet code="package.Klasse" ...>
```


----------



## looogi (16. Apr 2006)

ja super.. hat geklappt... jetzt habe ich aber eine nächste Frage.. 

ich will das Applet in einem JFrame laufen lassen, also als Applikation.... der Code sieht folgendermaßen aus:


```
public class EinBallJFrame extends JFrame {
	
	public EinBallJFrame(){
		
		
		setSize(400,400);
		EinBall applBall = new EinBall();
		add(applBall);
		setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		
	}
```

es erscheint nur ein Bild, der Ball bewegt sich aber nicht... wieso?

danke


----------



## L-ectron-X (17. Apr 2006)

Du musst alle Methoden, die normalerweise vom Browser aufgerufen werden, selbst aufrufen.
Und beachte dabei, Swing und AWT nicht zu mischen.


----------



## looogi (17. Apr 2006)

du meinst die in der init() Methode?

oder alle?


----------



## L-ectron-X (17. Apr 2006)

Die Methoden aus dem Lebenszyklus des Applets.
Möglicherweise musst du auch weitere Methoden von "außen" zugriffsfähig machen.


----------

