# JApplet langsam wegen vielen Tooltips?



## Jbuttool (26. Feb 2012)

Hallo,

Ich habe eine JApplet mit 66 JButtons.
Nachdem ich diesen Buttons Tooltips geadded
Hatte, wurden die Buttons sehr langsam. 
(je button, ein tooltip)

D.h. Dass wenn ich einen Button mit der Maus fokusiere erscheint 
Der Tooltip, wenn ich ihn Anschließend wieder aus dem Fokus nehme,
dauert es fast zwei sekunden bis der Fokus wirklich weg ist. In der 
Zeit kann ich keinen Button nutzen.

Ist das normal?


----------



## GUI-Programmer (26. Feb 2012)

Welchen Browser benutzt du?
Welches JRE?
Welches Betriebssystem (mit Leistung)?
Evtl. poste doch mal ein KSKB dass das Problem zeigt, denn so lässt sich dazu nicht viel sagen.


----------



## L-ectron-X (26. Feb 2012)

Jbuttool hat gesagt.:


> Ist das normal?


Nein, zeig dann auch mal deinen Quelltext.


----------



## Jbutttool (26. Feb 2012)

Hallo leute, 

Quelltext zeigen geht leider nicht, hab nur mit handy internet...

Ich arbeite mit einem thinkpad w520 (also genug leistung)
Jre7
kein browser, eclipse da java 7 noch nicht unterstützt wird.
Os = windows 7


----------



## L-ectron-X (26. Feb 2012)

Jbutttool hat gesagt.:
			
		

> Ich arbeite mit einem thinkpad w520 (also genug leistung)


Heutige Rechner sollten eigentlich genug Leistung haben, um die nötigen Berechnungen durchzuführen.



Jbutttool hat gesagt.:


> kein browser, eclipse da java 7 noch nicht unterstützt wird.


Verstehe ich nicht. Wie meinst du das?
Ich arbeite zu 50% unter Windows7. Da habe ich ein JDK/JRE 7. Und im Browser geht das auch.
(Opera, Firefox)

Ohne Code wird's schwer zu analysieren sein.


----------



## jbuttool (27. Feb 2012)

Wenn ich die Html-Seite in Firefox öffne, in die ich die
JApplet eingebunden habe


```
<html>
	<body>
		<p><applet code = Mathmania width=1024 height=520>
		</applet></p>
	</body>
</html>
```

erscheint garnichts....


----------



## L-ectron-X (27. Feb 2012)

FAQ: http://www.java-forum.org/applets/114668-java-applet-webseite-einbinden.html


----------



## jbuttool (27. Feb 2012)

```
<html>
<head>
<title>Ein Titel für die Webseite</title>
<body>
<object classid="java:MeineApp.class" codetype="application/java-vm" width="1024" height="520" />
</body>
</html>
```

Ändert nichts


----------



## L-ectron-X (27. Feb 2012)

Ja und? Keine Fehlermeldung in der Java-Konsole? Mal mit dem AppletViewer gestartet?
Wie sieht dein Code aus? Das hier ist ein Java-Forum und kein Hellseher-Club. :noe:


----------



## jbuttool (27. Feb 2012)

Hab doch schon geschrieben das nichts angezeigt wird 
(Also auch keine Fehlermeldung)
appletviewer zeigt auch nichts an.

Die Klasse mit meiner JApplet sieht so aus:


```
package View;

import java.awt.BorderLayout;

import javax.swing.JApplet;
import javax.swing.JPanel;

public class MeineApp extends JApplet implements Runnable {
	private static final long serialVersionUID = 001;
	private Thread th;
	
	private int width = 1024;
	private int height = 520;
	
	private MenuList menuList = new MenuList();
	private MenuBar menuBar = new MenuBar();
	private Changer changer = new Changer();
	
	// *********************************************************************
	public void init() {
		this.setSize(width, height);
		this.setLayout(new BorderLayout());
		this.setJMenuBar(menuBar.getMenuBar());
		menuList.getList().addListSelectionListener(changer);
		this.add(menuList.getScrollList(), BorderLayout.WEST);
		this.add(new JPanel(), BorderLayout.NORTH);		// Platzhalter
		this.add(new JPanel(), BorderLayout.SOUTH);		// Platzhalter
		this.add(changer.getMainPanel(), BorderLayout.CENTER);
	}
	
	// *********************************************************************
	public void start() {
		th = new Thread(this);
		th.start();
	}
	
	// *********************************************************************
	public void stop() {}
	
	// *********************************************************************
	public void destroy() {}
	
	// *********************************************************************
	public void update() {}
	
	// *********************************************************************
	public void run() {
		
		while(true) {
			
			repaint();

			try {
				Thread.sleep(10);
			} catch(InterruptedException e) {}
		}
	}
}
```


----------



## L-ectron-X (27. Feb 2012)

```
<object classid="java:view.MeineApp.class" 
    codetype="application/java-vm" width="1024" height="520" />
</object>
```

BTW werden Packages klein geschrieben. Und Schlafzeiten für Threads unterhalb von 20ms haben nach meiner Erkenntnis keine Auswirkungen mehr.


----------



## jbuttool (27. Feb 2012)

Danke für die zwei kleinen Tipps 

Ähm ja....nach wie vor wird nichts angezeigt, hab auch mal 
die Java-Versionen abgeglichen. Ich kompiliere mit der gleichen
Version mit der ich ausführe.


----------



## L-ectron-X (27. Feb 2012)

Hast du deinen Code angepasst und den Namen des Packages nun klein geschrieben? Sonst funktioniert das von mir vorgeschlagene Tag nicht.

Ansonsten teste mal, ob dein Browser mit Applets arbeiten kann:
http://www.java-forum.org/applets/126954-test-browser-applets-ausfuehren.html


----------



## jbuttool (27. Feb 2012)

Jup alles angepasst.

Dein toller Link hat wohl den ausschlaggebenden Punkt entdeckt:

"Java ist nicht installiert oder nicht aktiviert! :-("

Hmmm...ich arbeite doch die ganze Zeit damit^^


----------



## jbuttool (27. Feb 2012)

Mein Plugin-Manager von Firefox sagt allerdings das 
Java aktiviert ist....


----------



## L-ectron-X (27. Feb 2012)

Also gut. Wenn dein Firefox meint, dass er Java aktiviert hat, sollten ja folgende Applets laufen:
SystemInfo-Applet (signiert) - java-forum.org
Wegweiser-Applet


----------



## jbuttool (27. Feb 2012)

Ahhhh okay, firefox hat doch nicht java version 7, ich nahm an
das automatisch die neueste installiert wird dabei handelt es sich
bei der java.com seite um Java 6 update 32...

'wie installiere ich für meinen Firefox java 7?


----------



## L-ectron-X (27. Feb 2012)

Du musst nicht gleich die JRE-Version 7 installieren, wenn du nicht möchtest. Oracle hat ohnehin die "Testphase" für die JRE7 für Entwickler verlängert und empfiehlt Standardbenutzern noch die JRE6.

Es genügt also, wenn du dein Applet nochmal für die JRE 6 oder, von mir aus auch, darunter neu kompilierst.
Folgender Befehl in der Kommandozeile bewirkt die Ausgabe von Bytecode für eine JRE6 mit dem JDK7:

```
javac -source 1.6 -target 1.6 meinPackage.MeineKlasse.java
```

Ansonsten lädst du einfach mal die JRE7 bei Oracle herunter.


----------



## jbuttool (27. Feb 2012)

Jre7 und sdk7 ist schon installiert, seid längerem,
allerdings arbeitet mein Firefox mit java 6 und kann 
deshalb natürlich keine Applets anzeigen die mit java
7 kompiliert worden sind.

Also bekomme ich java 7 für Firefox garnicht?


----------



## L-ectron-X (27. Feb 2012)

Lies bitte meine obige Antwort nochmal.


----------



## jbuttool (27. Feb 2012)

Das beantwortet meine Frage nicht, der Post
spricht lediglich Empfehlungen aus und erläutert das sich java
7 in der Testphase befindet und für Standartnutzer nicht verfügbar ist.

Da steht nirgendwo das Java 7 für meinen Firefox garnicht vorhanden ist.

Wie schon gesagt ist auf dem Rechner jre 7 bereits installiert, da ich damit
Arbeiten möchte. Wenn es java 7 für Firefox nicht gibt, arbeite ich
trotzdem mit java 7 da meine JApplet noch lange nicht soweit ist, dass sie
auf meine Homepage kann (das dauert mind. noch 4-5 Monate, gibt schließlich
auch noch andere Dinge die man zu tun hat )


----------



## Marc T. (27. Feb 2012)

Um mal auf deine eigentlich Frage zurück zu kommen:

Hast du die erweiterten Stromspareinstellungen bei deinem W520 aktiviert?
Wenn ja, deaktiviere diese mal. Hab gerade einen kleinen Test durchgeführt,
da ich das gleiche Thinkpad besitze. Wenn ich die erweiterten Stromspar-
einstellungen aktiviere und eine JApplet mit so vielen Buttons und Tooltips 
laufen lasse, dauert das ganze auch recht lange....


----------



## L-ectron-X (27. Feb 2012)

@jbuttool: Was ist daran so schwer, das Gelesene richtig auszuwerten.

Zusammengefasst habe ich oben gesagt, dass du auch für JREs unterhalb JRE7 mit dem JDK7 kompilieren kannst. Damit lassen sich auf dem JDK7 kompilierte Programme auch in JREs unterhalb der JRE7 ausführen.
Den Befehl für die Kommandozeile habe ich dafür mitgeliefert.

Und ich habe gesagt, dass du dir das JRE7 mal bei Oracle herunterladen sollst. Derzeit ist das die _Version 7 Update 3_. Ich weiß nicht, ob sich Firefox dagegen sträubt, mit der JRE dann zusammenzuarbeiten. Probiers aus.


----------



## jbuttool (27. Feb 2012)

Das was ich gemacht habe ist folgendes:

- Von Firefox Java(TM) 6 update 32 entfernt
- Java 7 Update 3 von java.com heruntergeladen
- Java 7 Update 3 installiert
- Firefox neu gestartet
- Nach Java Plug-In gesucht
- Kein Java Plug-In gefunden

Ich kann lediglich wieder das java 6 update 32 installieren.

Und @Marc T.

Danke.... das wars


----------



## L-ectron-X (27. Feb 2012)

Gut, dann ist das Problem aus der Eingangsfrage gelöst. :toll:

Brauchst du nun noch Hilfe, um in deinem Browser die mit dem JDK7 erzeugten Applets zum Laufen zu bringen?


----------



## jbuttool (27. Feb 2012)

Okay, also wenn ich mit java 7  kompiliere geht es definitiv nicht mit Firefox.
Die Version ist noch nicht verfügbar.

Jetzt wollte ich es kompilieren wie du es sagtest:

javac -source 1.6 -target 1.6 view.MeinApplet.java

Dies führe ich in dem Verzeichnis aus, in dem sich der Ordner view befindet.
Er beschwert sich dann allerdings das er view.MeinApplet.java nicht finden kann...


----------



## L-ectron-X (27. Feb 2012)

Sagtest du nicht oben, dass dein Applet MeineApp.java (bzw. Mathmania.java) heißt?


----------



## jbuttool (27. Feb 2012)

Ich habe mehrere JApplets die über ein Package view verfügen 
Entschuldige, hätte sie hier nicht mischen dürfen das sorgt nur für
Verwirrung.

Den richtigen File-Namen bin ich allerdings durch aus in der lage richtig
anzugeben 

javac -source 1.6 -target 1.6 view.MeinApplet.java

Er kann die Datei view.MeinApplet.java nicht finden.


----------



## L-ectron-X (27. Feb 2012)

Ups, habe gerade gesehen, dass mein Befehl falsch ist. 
Also noch mal:

```
javac -source 1.6 -target 1.6 view/MeineApp.java
```
...wenn du im Verzeichnis stehst, in dem das Verzeichnis view gespeichert ist.


----------



## jbuttool (27. Feb 2012)

Ahhhh...Okay jetzt lässt es sich kompilieren....
nur....jetzt lädt wieder überhaupt nichts im 
Firefox....weiße Seite, keine Meldung.

Der schöne blaue Kreis neben dem Mauszeiger zeigt mir lediglich
das er was lädt...kommt aber nicht vorwärts....

Bevor ich jetzt meine JApplet jetzt mit 1.6 kompiliert hatte, 
hatte ich nochmal geguckt was er jetzt sagt wegen java 7,
da hatte er wenigstens die Fehlermeldung gebracht, dass er 
mit der Verison nichts anfangen kann.

Jetzt aber wie gesagt wieder nichts.


----------



## L-ectron-X (27. Feb 2012)

Das hängt sicher nicht mit dem auf Version 6 kompilierten Quellcode zusammen.
Gibt es eine Fehlermeldung, wenn du das Applet im AppletViewer ausführst?

```
appletviewer MeineWebseite.html
```


----------



## jbuttool (27. Feb 2012)

"Für <object>-Tag ist ein "code"-attribut erforderlich."

Hatte das in die HTMl eingefügt das du gepostet hattest


```
<html>
<head>
<title>Ein Titel für die Webseite</title>
<body>
<object classid="java:view.MeineApp.class" 
    codetype="application/java-vm" width="1024" height="520" />
</object>
</body>
</html>
```


----------



## L-ectron-X (27. Feb 2012)

Hmm, ich kann in dieser HTML-Datei keinen Fehler sehen. Ein code-Attribut kenne ich nur aus dem Applet-Tag.
Notfalls stellt du einfach erst mal auf das Applet-Tag um.


----------



## jbuttool (27. Feb 2012)

Er gibt mir dann ne ClassNotFoundException MeineApp.class
(Also der appletviewer und firefox)


----------



## jbuttool (27. Feb 2012)

bzw. noch mehr:

java.security.AccessControlsException: access denied ("java.io.FilePermission" "C:\Users\Benutzer\Dropbox\Workspace\Projekt\Applet\MeineApp" "read") at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)

usw.


----------



## L-ectron-X (27. Feb 2012)

Ich weiß nicht, was du eigentlich mit deinem Code bezwecken möchtest. Aber offenbar versuchst du auf die lokale Verzeichnisebene des Client zuzugreifen.
Das dürfen Applets normalerweise nicht. Daher die [JAPI]AccessControlException[/JAPI].
Nur wenn es wirklich Sinn macht sollte man dies beim Client erbitten.
Dazu muss das Applet signiert werden. Mehr dazu in der FAQ.


----------



## jbuttool (27. Feb 2012)

Achsooo,
ja das kommt daher das ich ein rießengroßes JMenu habe, dass ich 
aus dem Verzeichnisbaum eines Lokalen Ordners gezogen habe....
hmm...dann muss ich das JMenu sowieso anders anlegen, sprich
"Von Hand"
Ich danke dir sehr für deine geduldige Hilfe


----------

