Forum: PC-Programmierung Problem mit Applet


von Valentin B. (nitnelav) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo!
In meinem AVRTimerCalculator-Projekt wurde jetzt von Gjlayde die gute 
Idee aufgeworfen, das ganze als Browseranwendung zu machen.
Da ich das Projekt sowiso schon auf Java mit Swing umgestellt hatte, 
dacht ich mir, es wäre eine gute Idee, das ganze Ding einfach als Applet 
anzubieten.
Nun ja, gesagt, gecoded.

Leider funktioniert das Applet (siehe Anhang) nur im 
Eclispe-Appletviewer, in Opera werden nicht alle Schaltflächen 
angezeigt.
Genauer gesagt werden sie erst geladen, wenn sie in den Fokus kommen.

Wie kann man das verbessern?
Ich freue mich über Hilfe!

Mit freundlichen Grüßen,
Valentin Buck

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Repaint solltest du vermutlich im SwingAWTThread aufrufen (wieso wird 
das überhauptso unmotiviert in der StartMethode aufgerufen?), 
funktioniert es den in anderen Browsern?

von Valentin B. (nitnelav) Benutzerseite


Lesenswert?

Läubi .. schrieb:
> Repaint solltest du vermutlich im SwingAWTThread

Wie binde ich das ein?
Ich bin in Java noch nicht so gut.
Im InternetExplodierer geht es gar nicht.
Firefox habe ich noch nicht getestet.
Das ist das erste Applet mit Steuerelementen, das ich programmiere.
Das mit der Startmethode was eine Art verzweifelter Rettungsversuch.
Könntest du mir da weiterhelfen?

Mit freundlichen Grüßen,
Valentin Buck

von Bernd K. (bem) Benutzerseite


Lesenswert?

Hallo,

pack einfach alles, was in deiner main-Methode steht in init()

Grüße

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

So hab nochmal draufgeschaut.
Zumindest in Eclipse läßt es sich schonmal als applett starten.
1
public void paint(Graphics g){
2
  getContentPane().repaint();
3
}
Das ist jedoch keine so gute Idee... hat das einen Grund? Ansonsten raus 
damit! Du überschreibst damit eine Super-Methode rufst diese aber nicht 
auf sonder führst etwas komplett anderes aus... das ist nicht gut.
Falls du Eclipse benutzt, aktiviere unter den SaveActions mal die Option 
das er "MissingOverrideAnnotations" hinzufügt, dann sieht man das 
besser.

Die Main Methode kann meiner Meinung nach dafür komplett raus. (Und 
sollte normal auch nicht in init rein!)

Auch wichtig:
>> However using JApplet you need to add the child to the JApplet's
>> contentPane instead:
>>     applet.getContentPane().add(child);
>> The same is true for setting LayoutManagers, removing components,
>> listing children, etc.
http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JApplet.html 
(Hervorhebung durch mich)

Dies tust du hier:
1
Container c = getContentPane();
2
    setLayout(new GridLayout(5, 3, 10, 10));
 aber nicht!
Statdessen müßte es heissen:
1
Container c = getContentPane();
2
    c.setLayout(new GridLayout(5, 3, 10, 10));

von Läubi .. (laeubi) Benutzerseite


Angehängte Dateien:

Lesenswert?

Mit den Änderungen klappt es nun zumindest im IE wird es schonmal so 
angezeigt. (BTW, da du oben nur eine Classfile Angehängt hast... die 
ATC_Applett$.... Files gehören auch dazu, deshalb hab ich das jetzt mal 
in ein Jar gepackt)

von Valentin B. (nitnelav) Benutzerseite


Angehängte Dateien:

Lesenswert?

Danke für die Erklärung.
Jetzt funktionierts!

Ich kann sogar das gleiche JAR für die Computeranwendung
und das Applet nehmen (zwei verschiedene Codedateien).

Die Frage ist jetzt nur noch, wo ich das Applet unterbringe.
Kann ich das hier hochladen, oder gibt's da Ärger mit dem Traffic
(naja, fast 20kB).
Und wie binde ich das ins Wiki ein?
Oder geht das nur über externe Seiten wie meinen Blog?

Mit freundlichen Grüßen,
Valentin Buck

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Valentin Buck schrieb:
> Und wie binde ich das ins Wiki ein?
Falls es noch keine speziellen Applett Tags im Wiki gibt, müsstest du 
Andreas bitten das entsprechend nach zurüsten/freizuschalten.

Valentin Buck schrieb:
> Ich kann sogar das gleiche JAR für die Computeranwendung
> und das Applet nehmen (zwei verschiedene Codedateien).
Man kann auch beides Kombinieren, das ist korrekt, z.B. indem du im 
Manifest einen Main-Header einbindest kann dann das jar auch einfach per 
Doppelklick gestartet werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.