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
Repaint solltest du vermutlich im SwingAWTThread aufrufen (wieso wird das überhauptso unmotiviert in der StartMethode aufgerufen?), funktioniert es den in anderen Browsern?
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
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)); |
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)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.