Applet java 1.7 in Website einbinden ?

poku17

Mitglied
Hatte auch das Forum und google dazu durchsucht, aber zu speziell dem Thema nichts gefunden, gibt ja ansich schon genug Themen wo es ums einbinden eines Applets geht, aber brauche einfach Euer Fachwissen 😀

Also, habe das Problem, das mein Applet so gut wie in keinem Browser funktioniert. Ausnahme ist hierbei Opera, wobei es auch nicht richtig angezeigt wird, beim scrollen zieht es hinterher.
die "funktionierende" Version wurde so eingebunden :

[Java]
<object codetype="application/java"
classid="java:Time.class" archive="Zeit.jar">
<param name="test" value="1"/>
</object>
[/Java]

Habe es aber auch mit den Tags <applet> und auch <embed> versucht, leider ohne Erfolg.

Fehlermeldungen bekomme ich entweder durch die Thread-methode sleep();
oder die Details der Fehlermeldung haben keinen wirklichen inhalt :

Java-Plug-in 10.2.1.255
JRE-Version verwenden 1.7.0_02-b13 Java HotSpot(TM) Client VM
Benutzer-Home-Verzeichnis = C:\Users\PoKu17

----------------------------------------------------
c: Konsolenfenster löschen
f: Objekte in Finalisierungs-Queue finalisieren
g: Garbage Collect
h: Diese Hilfemeldung anzeigen
l: Class Loader-Liste ausgeben
m: Speicherauslastung drucken
o: Logging auslösen
q: Konsole ausblenden
r: Policy-Konfiguration neu laden
s: System- und Deployment-Eigenschaften ausgeben
t: Threadliste ausgeben
v: Thread-Stack ausgeben
x: Class Loader-Cache leeren
0-5: Trace-Ebene auf <n> setzen
----------------------------------------------------

Und mehr steht dann nicht da -.-

Funktionieren tut dass Applet ansich ja schon, aber trotzdem, hier der Quelltext dazu:

[Java]
import java.awt.*;
import java.text.DateFormat;
import java.util.Date;
import javax.swing.*;

//@author Poku17

public class Time extends JApplet {
String time;
JTextPane textPane;
Clock c;
Time t;
DateFormat dFormatTs = DateFormat.getTimeInstance(2);


public void init() {
textPane = new JTextPane();
JButton btn = new JButton("push");
JButton btnR = new JButton("remove");
t = new Time();
c = new Clock();
c.start();

}
public void start(){
if(c == null){
c = new Clock();
c.start();
}
}
public void stop(){
if(time == null){
c.interrupt();
time = null;
}
}
public void destroy(){
if(time == null){
c.interrupt();
time = null;
}
}
public void paint(Graphics g){
g.setColor(Color.white);
g.fillRect(15,17,50,16);
if(time != null){
g.setColor(Color.red);
g.drawString(time, 15, 30);
}
}
class Clock extends Thread{
public void run(){

while(isInterrupted() == false){
time = dFormatTs.format(new Date());
repaint();

try {
Clock.sleep(1000);
} catch (InterruptedException ex) {
ex.printStackTrace();return;
}
}
}
}
}

[/Java]

Daraus entsteht meine Frage, liegt es evt daran, dass ich die neuste Java-Version verwende und die Browser erst mit Java 1.6 klar kommen ? oder was meint ihr ? Hilfe ! ^^

Nachzug: : Jetzt funktioniert es schonmal üer <object> auch bei Mozilla, aber, habe auch dabei noch n Prob: Er benötigt fuer die Anzeige des Apps wesentlich mehr Platz ?? lasse die Uhrzeit ja auf 50x16 px zeichnen, aber im Browser (Opera) ist oben und links ein weißer Rand, also muss ich die width und height beim einbinden größer einstellen, was aber dann sche*** aussieht, daher wuesste ich gerne wie ich den weißen Rand wegbekomme oder umgehen kann ???
(Bei Firefox ist der Rand nicht weiß, sondern in der umgebenden Farbe...)

könnt euch das Prob auch auf der Seite WAB Java-Kompendium angucken, unten in der Fußzeile...
und bitte keine Kritik zur HP, ist noch nicht fertig 😛
 
Zuletzt bearbeitet:
Ich denke die wenigsten haben Java 1.7 auf ihrem Rechner und noch weniger die 1.7 in ihrem Browser eingebunden.
In meinem hier läuft noch die 1.4, gehört aber der Firma ;-) zu Hause 1.6
 
Thx, werd mich wohl auf eine ältere Version einstellen muessen.
Bei sich zuhause sollte ansich jeder 1.6 haben denke ich. Und da die Seite ja ansich an Java Einsteiger gerichtet ist und noch als Nachschlagewerk zugebrauchen sein wird, sollte jeder, der Interesse am Kontext hat, Java 6 mindestens Installiert haben. Dann muss ich eben einstellen, dass das App nur eingebunden wird, wenn der client min 1.6 unterstuetzt... die andern sehen dass dann wohl nicht...
keine lust fuer jede java version ein extra app zuschreiben...^^
 
Das brauchst du auch nicht.
Schau dir deinen Code an! Weit und breit nichts zu sehen von Klassen und Methoden aus Java 5, 6 oder 7.
Kompiliere deinen Code einfach mit folgenden Optionen:
Code:
javac -source 1.4 -target 1.4 MeineKlasse.java
Dann erzeugt der Java 1.7-Compiler auch kompatiblen Bytecode für Java 1.4.x.
Diesen kannst du dann in deine Webseite einbinden und erreichst damit alle Benutzer, die Java-Versionen ab Java 1.4 installiert haben.

[TIPP]Nicht vom JApplet die paint()-Methode überschreiben!
Besser eine Klasse von JPanel ableiten, in dieser zum Zeichnen die paintComponent()-Methode überschreiben und dem Applet als Komponente hinzufügen (add(...)).
Das hat den Vorteil, dass du dieses Panel auch in eine Applikation einbauen könntest.[/TIPP]
 
ah gut zu wissen...
ja, hab noch meine probs mit GUI/Applets^^ werde es morgen oder vllt noch nachher ma umschreiben und gucken ob ichs hinkriege mit JPanel, hatte da bei andern Apps gelegentlich das prob, dass er es nicht neuzeichnet... mit canvas hatte es dann wieder funktioniert...^^ naja, diesma auch mit JPane 😀
 
Hatte jetzt mal etwas rumprobiert...
das mit dem java-compiler ging nicht, iwas wegen meinem classpath, die muss ich wohl anders einstellen...
[Java]
warning: [options] bootstrap clath path not set in conjunction with -source 1.4
1 warning
[/Java]
das selbe auch bei allen andern außer 1.7... da muss ich die Umgebungsvariablen aendern oder ? ^^

und das mit dem JPanel.paintComponent(); hatte im Appletviewer funktioniert, aber im Netz dann nicht mehr.. ka warum -.-

[Java]
public class Time_2 extends JApplet {
Color color = new Color(25,25,25);
String time;
JTextPane textPane;
Clock c;
Time_2 t;
DrawArea main;
DateFormat dFormatTs = DateFormat.getTimeInstance(2);


public void init() {
textPane = new JTextPane();
JButton btn = new JButton("push");
JButton btnR = new JButton("remove");
main = new DrawArea();
add(main);
setSize(50,16);
setMaximumSize(new Dimension(50,16));
t = new Time_2();
c = new Clock();
c.start();

}
public void start(){
if(c == null){
c = new Clock();
c.start();
}
}
public void stop(){
if(time == null){
c.interrupt();
time = null;
}
}
public void destroy(){
if(time == null){
c.interrupt();
time = null;
}
}

class DrawArea extends JPanel{
public void paintComponent(Graphics g){
g.setColor(color);
g.fillRect(0,0,50,16);
if(time != null){
g.setColor(Color.white);
g.drawString(time, 0, 12);
}
}
}
class Clock extends Thread{
public void run(){

while(isInterrupted() == false){
time = dFormatTs.format(new Date());
repaint();

try {
Clock.sleep(1000);
} catch (InterruptedException ex) {
ex.printStackTrace();return;
}
}
}
}
}


[/Java]
 
Das ist nur eine Warnung, kein Fehler. Es müsste trotzdem funktionieren.
Du brauchst in der init()-Methode
Code:
Time_2
nicht instanziieren und
Code:
Clock
nicht instanziieren und starten, das kann weg.
Dein Applet funktioniert trotzdem bei mir.
 
Okay, Warning != Error 😀
hmm, hatte wohl blos iwo n tipp fehler oder ähnliches..., eben noch ma das mit JPane hochgeladen und es funxt, ohne was geaendert zuhaben... thx 😀

Ja funxt auch ohne die Instanzierung.. aber nur weil er das dann in der start methode macht... Time_2 zu instanzieren war schwachsinn, das stimmt 😀
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben