Applet Frage

Status
Nicht offen für weitere Antworten.

lolcat3000

Mitglied
Moin,

hab hier ein Problem/Frage:

Irgendwie funktioniert das mit dem Double Buffering im Applet nicht.

[highlight=Java]package Tests;

import java.applet.*;
import java.awt.Color;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.Image;

/**
*
* @author #####
*/
public class Applet_Thread extends Applet implements Runnable
{
Thread t;
int i;
String wert, position;

Image offscreenImage;
Graphics offscr;

int w = size().width;
int h = size().height;

public void init()
{
t = new Thread(this);
t.start();

i = 0;

int width = size().width;
int height = size().height;

offscreenImage = createImage(width, height);
offscr = offscreenImage.getGraphics();

}

public void run()
{
while(true)
{
i++;
repaint();

try
{
t.sleep(1000/30);
}
catch(InterruptedException ex) {;}
}
}

public boolean keyDown(Event e, int key)
{
wert = "Wert der Taste = "+key;

return true;
}

public boolean mouseMove(Event e, int x, int y)
{
position = "Position "+"x: "+x+" y: "+y;

return true;
}

public void paint(Graphics g)
{
g.drawString("Schleife = "+i, 20, 20);
g.drawString(position, 20, 60);
g.drawString(wert, 20, 40);

offscr.setColor(Color.white);
offscr.fillRect(0, 0, w, h);

offscr.setColor(Color.white);
offscr.fillArc(0,0,w,h,w,h);

g.drawImage(offscreenImage, 0, 0, this);



}
public void update(Graphics g)
{
paint(g);
}

}[/highlight]

Immer wenn sich die Schleifenanzahl oder die Position der Maus verändert wird (mit drawString dargestellt), kommt es mir nicht so vor als ob es gelöscht und neu dargestellt wird sondern überschrieben/überzeichnet.

Kann mir da jemand weiterhelfen?
 

Marco13

Top Contributor
Ja, vielleicht - vorher aber zwei Rückfragen:
- Aus welchem Jahrtausend stammt das Buch, aus dem du die Sache mit "keyDown" und so hast? (Das ist schon seit Java 1.1 veraltet - also seit 1997!!!)
- Willst du wirklich AWT (Applet) verwenden? Bei Swing (JApplet) ist DoubleBuffering schon eingebaut.
 

lolcat3000

Mitglied
Naja, aber ich fand es war sehr gut Dokumentiert und jeder Schritt war genau beschrieben.

Könnt ihr mir den ein anderes Tutorial geben das auf neuerem Stand ist?
 

lolcat3000

Mitglied
Gibts eigentlich noch so ähnliche Tutorials wie das?

Falls nicht hätte ich ne Frage ob ich Applet mit JApplet (also AWT mit Swing) "kreuzen" kann.
Denn dieser setDoubleBuffer-Befehl wäre wirklich gut.

@Marco13, kannst jetzt auf meine Frage antworten? :)
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Deine erste Frage war, ob ich dir da weiterhelfen kann. Die Antwort ist: Ja.

Zur eineinhalbten Frage: Ein "kreuzen" von Swing und AWT ist nicht empfehlenswert. Es wäre eher sinnvoll, gleich nur Swing zu verwenden.

Sag' einfach bescheid, was genau deine Frage ist, und wo es hängt... :)
 

lolcat3000

Mitglied
Ok, aber was genau ist der Unterschied bzw. was verändert sich von AWT zu Swing? Gibts das irgendwo zum nachlesen? Oder noch besser wär ein Tutorial wie man mit JApplet ein Game bastelt.
 

L-ectron-X

Gesperrter Benutzer
AWT-Komponenten sind Heavyweight-Komponenten. Die werden auf die Komponenten des Betriebssystems gemappt. Die Anzahl der Komponenten ist begrenzt und die Funktionsweise veraltet.
Swing-Komponenten sind Lightweight-Komponenten. Sie werden von Java gezeichnet. So ist auch ein Pluggable Look And Feel möglich. Die Komponenten sind moderner und basieren meist auf bewärten Konzepten (MVC, Delegation-Event-Modell etc.)

Alle neuen JREs unterstützen zwar noch AWT, aber es macht kaum noch Sinn, die alten Komponenten zu benutzen.

Edit. Hier auch beschrieben: Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 16 Grafische Oberflächen mit Swing
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Ob man ein Spiel als Applet oder "normale Anwendung" schreibt macht erstmal nicht sooo viel Unterschied (abgesehen von Details wie dem Abspeichern von Spielständen usw). Der Hauptunterschied ist, dass bei einer Anwendung irgendwo "...extends JFrame" steht, und bei einem Applet eben "... extends JApplet"....
 

lolcat3000

Mitglied
Die init() -Methode hab ich bisher auch nur in Applets gesehen :) Soll vermutlich der Konstruktor sein.

Gibts irgendwo eine Datenbank oder ne Seite wo ich mir die ganzen JApplet-Methoden ansehen kann?
 

lolcat3000

Mitglied
So, ich stehe mal wieder vor einem Problem. Und zwar muss ich im JApplet eine Klasse "Thread" erstellen und die "sleep()" Methode funktioniert auch nicht.
Hab mal den Source Code mitgepostet...

[highlight=Java]package Tests;

import javax.swing.*;

/**
*
* @author Robert
*/
public class Thread extends JApplet implements Runnable
{
Thread t;
int i;

private Thread(Thread aThis) {}

public void init()
{
i = 0;
t = new Thread(this);
}

public void run()
{
while(true)
{
i++;
repaint();
try
{
t.sleep(1000/30);// <-Methode funzt nicht
}
catch(InterruptedException ex) {}
}
}
}[/highlight]

Mein Ziel ist es das selbe Programm oder Applet mit JApplet zu erstellen wie vorher (siehe ein paar Posts weiter oben).

Und noch ne Frage, wie funzt das jetzt mit dem setDoubleBuffered() im JApplet? Wo muss ichs hinschreiben?

EDIT: Das mit dem Thread hat sich geklärt...man bin ich blöd und nenne meine Klasse Thread -.-
 
Zuletzt bearbeitet:

hdi

Top Contributor
Ein JApplet hat automatisch DoubleBuffering
 
Zuletzt bearbeitet:

lolcat3000

Mitglied
Ok. Und wie sieht die Methode "paint(Graphics g)" von Applet in JApplet aus?
Ich will ja nicht AWT mit Swing kreuzen^^
 

hdi

Top Contributor
JApplet ist auch AWT. Es erbt von AWT Container. D.h. als ich vorhin meinte ein JApplet ist "Swing", war das falsch. Es hat halt die Double-Buffering Feature von Swing, aber ist ansonsten auch AWT (siehe API)
 

Wildcard

Top Contributor
JApplet ist auch AWT. Es erbt von AWT Container. D.h. als ich vorhin meinte ein JApplet ist "Swing", war das falsch. Es hat halt die Double-Buffering Feature von Swing, aber ist ansonsten auch AWT (siehe API)
JApplet ist genauso viel, oder wenig Swing wie ein JFrame. Eine Mid-Weight Component
 

lolcat3000

Mitglied
Also wenn das so ist, verstehe bzw. finde ich meinen Fehler nicht...

[highlight=Java]package Tests;

import java.awt.Graphics;
import javax.swing.*;

/**
*
* @author Robert
*/
public class Applet_Thread extends JApplet implements Runnable
{
Thread t;
int i = 0;
String koords, loop;

public void init()
{
t = new Thread(this);
}

public void run()
{
while(true)
{
i++;
repaint();
try
{
t.sleep(1000/30);
}
catch(InterruptedException ex) {;}
}
}

public boolean mouseMove(int x, int y)
{
koords = "Position x: "+x+" y: "+y;

return true;
}

public void paint(Graphics g)
{
g.drawString("Schleife: "+loop, 20, 20);
g.drawString(koords, 20, 40);
}
}[/highlight]

Wenn man das ausführt kommt immer der Fehler das "Schleife" null ist. Als ich das mit Applet machte hats funktioniert.
 

Marco13

Top Contributor
Einer der wenigen Unterschiede: JApplet hat Methoden init, start, stop die automatisch vom Appletviewer (bzw. Browser) aufgerufen werden. Wenn man das ganze als JFrame macht, muss man init von Hand aufrufen.... (vielleicht hätte ich präziser sagen sollen: Man kann ein Applet/eine Application leicht so schreiben, dass sie sich nur durch das Austauschen von "extends JFrame"/"extends JApplet" in eine Application/ein Applet umwandeln läßt)
 

lolcat3000

Mitglied
Also hätte ich von Anfang an normal programmieren können als ob es ein JFrame wär... find ich ganz nice, denn mit der "normalen" GUI Programmierung (JFrame) kenn ich mich doch einigermaßen gut aus.

Danke für die vielen hilfreichen Antworten! :toll:
 

L-ectron-X

Gesperrter Benutzer
Man kann ein Applet/eine Application leicht so schreiben, dass sie sich nur durch das Austauschen von "extends JFrame"/"extends JApplet" in eine Application/ein Applet umwandeln läßt)
Kann man machen, ja, aber damit nimmt man sich einen Teil der Flexibilität, die man gewonnen hat.
Wenn man beides braucht, hat es sich bewährt, einfach eine Klasse von JFrame erben lassen, für die Anzeige in einem Fenster. Eine weitere Klasse, die von JApplet erbt, für die Anzeige in einer Webseite. Und (mindestens) eine Klasse, die von JPanel erbt, die den anzuzeigenden Inhalt präsentiert. Das JPanel kann so in beide (JApplet/JFrame) Klassen eingebaut werden, ohne an Flexibilität zu verlieren.
 

Marco13

Top Contributor
Vielleicht hätte ich nicht nur präziser sondern auch konkreter werden sollen...
Code:
class Thing extends JFrame
{
    public Thing()
    {
        getContentPane().add(new ThingContents());
    }
}

class Thing extends JApplet
{
    public Thing()
    {
        getContentPane().add(new ThingContents());
    }
}
... so in etwa - du weißt, worauf ich rauswollte.... :rolleyes:
 

Ebenius

Top Contributor
Wieso wird eigentlich ständig von JFrame abgeleitet? Meist ergibt das keinen Sinn. Man leitet von JPanel ab oder baut ein JPanel mit dem entsprechenden Inhalt auf, ohne von JPanel abzuleiten. Dann legt man das Panel auf ein JFrame. Fertig. Beim (J)Applet so ähnlich. Man leitet von (J)Applet ab (weil man ja init() und start() und so überschreiben muss) und dort wird dann das gleiche Panel draufgelegt. Fertig.

Ebenius
 

lolcat3000

Mitglied
Ähm, jetzt mal ein paar Verständnis Fragen:

Muss ich jetzt die Methoden int(), start(), stop() und destroy() im JApplet drin haben?
Und wo ist die run() Methode geblieben?
Und wo führ ich den Thread aus?(War ja bisjetzt immer im run())?
 

Ebenius

Top Contributor
Muss ich jetzt die Methoden int(), start(), stop() und destroy() im JApplet drin haben?
Nein. Die Methoden sind ja in der Applet-Klasse bereits implementiert. Meist braucht man aber trotzdem mindestens zwei der vier Methoden, oft auch vier, selber. Also überschreibt man die in Applet implementierten Methoden mit dem was man eben machen möchte. Keiner zwingt Dich dazu. Aber Du willst es trotzdem. :)

Und wo ist die run() Methode geblieben?
Und wo führ ich den Thread aus?(War ja bisjetzt immer im run())?
Das darf Dir jemand beantworten der den Thread bisher schon in der Hand hatte. :)

Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Einfache Layout Frage für Applet -> Was mache ich bloss falsch? AWT, Swing, JavaFX & SWT 2
G Grafikformat für AWT-Applet? AWT, Swing, JavaFX & SWT 0
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
T Applet Applet in JFrame einbinden AWT, Swing, JavaFX & SWT 8
C Applet Applet funktioniert in Eclipse aber nicht in Browser AWT, Swing, JavaFX & SWT 1
S Sandboxed Applet weiterhin moeglich..? AWT, Swing, JavaFX & SWT 5
S Oracle's neue Sicherheitseinstellungen zerstoeren mein Applet. Was tun? AWT, Swing, JavaFX & SWT 3
G Applet Applet Komponenten flackern AWT, Swing, JavaFX & SWT 10
U CardLayout im Applet AWT, Swing, JavaFX & SWT 4
J Applet Applet Vererbung/Überladen AWT, Swing, JavaFX & SWT 5
G JavaFX mit ANT deployen als Applet AWT, Swing, JavaFX & SWT 3
S Applet Application 2 applet AWT, Swing, JavaFX & SWT 3
T Applet JTattoo Look and Feel AWT, Swing, JavaFX & SWT 5
T Signiertes Applet Urheber angeben AWT, Swing, JavaFX & SWT 5
S Applet Repaint AWT, Swing, JavaFX & SWT 3
B Java-Applet Parameter übergabe? AWT, Swing, JavaFX & SWT 2
M Applet mit Bildern AWT, Swing, JavaFX & SWT 2
T Applet in JSP einbinden AWT, Swing, JavaFX & SWT 4
R MouseEvent.getX() liefert in Applet Screen-Koordinate AWT, Swing, JavaFX & SWT 2
K Applet Wieso kann ich keine Array im Applet initialisieren AWT, Swing, JavaFX & SWT 13
A Applet Applet vom Web-Server aus aufrufen AWT, Swing, JavaFX & SWT 11
A Applet Applet startet nicht AWT, Swing, JavaFX & SWT 2
P Tatsächliche Größe für Applet AWT, Swing, JavaFX & SWT 3
B Applet Aus Applet signiertes jar mit externen libs erstellen AWT, Swing, JavaFX & SWT 9
S JDialog über Applet AWT, Swing, JavaFX & SWT 3
M Warum funktioniert mein Applet nicht? AWT, Swing, JavaFX & SWT 6
D Applet hintergrund wird nicht weiß AWT, Swing, JavaFX & SWT 2
R Applet JavaScript Methodenaufruf AWT, Swing, JavaFX & SWT 2
A Applet Animiertes gif in awt applet anzeigen AWT, Swing, JavaFX & SWT 11
X Applet Java Applet Datei Ausführung AWT, Swing, JavaFX & SWT 9
A Applet .gif in applet Image nicht animiert angezeigt AWT, Swing, JavaFX & SWT 4
A Applet Applet aus Code neu starten AWT, Swing, JavaFX & SWT 2
K Applet erkennt keine Frameverkleinerung AWT, Swing, JavaFX & SWT 5
S Applet funktioniert nach Browserreload nicht richtig AWT, Swing, JavaFX & SWT 2
T Applet Applet vs. WebStart AWT, Swing, JavaFX & SWT 4
S Applet starten AWT, Swing, JavaFX & SWT 4
K JTable im Browser nicht zu sehen - Applet AWT, Swing, JavaFX & SWT 6
B Applet Button oder Toolbar in einem Applet AWT, Swing, JavaFX & SWT 5
V Applet mit Bildbearbeitung AWT, Swing, JavaFX & SWT 3
V Applet Applet starten schlägt fehl AWT, Swing, JavaFX & SWT 2
W Button in Applet AWT, Swing, JavaFX & SWT 9
kniffel GUI-Applet JTable füllt Hintergrund völlig aus AWT, Swing, JavaFX & SWT 4
J Applet Java-Applet friert mit Firefox ein AWT, Swing, JavaFX & SWT 8
J Applet Tetris flackert AWT, Swing, JavaFX & SWT 9
F Applet Applet starten...(+Timer?) AWT, Swing, JavaFX & SWT 12
S [JAVA] JFrame in Applet/JApplet AWT, Swing, JavaFX & SWT 14
D Applet Applet das auf fremden Libraries basiert einbinden? AWT, Swing, JavaFX & SWT 20
M Applet wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
M JMenuBar im Applet und paint AWT, Swing, JavaFX & SWT 9
E Applet Neuen Tab aus Applet öffnen AWT, Swing, JavaFX & SWT 3
G Applet, Link ermitteln, dem der Benutzer gefolgt ist AWT, Swing, JavaFX & SWT 2
K Email versenden ueber Applet AWT, Swing, JavaFX & SWT 11
S Applet in JFrame einbinden AWT, Swing, JavaFX & SWT 6
S Button aktivieren (Applet) AWT, Swing, JavaFX & SWT 2
3 Applet Applet zeigt nur weiße Fläche AWT, Swing, JavaFX & SWT 15
B 2 Probleme (JFrame & Applet) AWT, Swing, JavaFX & SWT 7
A Programmieren einer Agenda mit einer Liste (als Applet und .txt zum Speichern) AWT, Swing, JavaFX & SWT 7
H applet Methode aus abstrakter Klasse aufrufen AWT, Swing, JavaFX & SWT 12
H Applet - Hilfedateien im Browser öffnen / eine Webseite laden AWT, Swing, JavaFX & SWT 6
O JPanel aus Applet starten AWT, Swing, JavaFX & SWT 3
O Applet-Steuerung mit Tastaturbefehlen AWT, Swing, JavaFX & SWT 3
F 4-Gewinnt als Applet AWT, Swing, JavaFX & SWT 24
F Applet vs Stand-Alone-Client AWT, Swing, JavaFX & SWT 3
B AWT Bild als Hintergrund im Applet AWT, Swing, JavaFX & SWT 2
D Probleme mit MouseWheelListener und JLayeredPane in Applet AWT, Swing, JavaFX & SWT 2
G Applet und Swing Anwendung AWT, Swing, JavaFX & SWT 2
S Applet - Aerger mit dem Hintergrundbild - JLabel und JTextfield AWT, Swing, JavaFX & SWT 7
F Applet zeigt Bilder nicht an AWT, Swing, JavaFX & SWT 5
R for-Schleife in Applet ausgeben AWT, Swing, JavaFX & SWT 3
S Bild wird auf Canvas in Applet nicht gezeichnet AWT, Swing, JavaFX & SWT 4
W Swing heapsort + Applet AWT, Swing, JavaFX & SWT 4
P Diagramm in einem Applet zeichnen AWT, Swing, JavaFX & SWT 4
M Java Applet JTable/JList AWT, Swing, JavaFX & SWT 6
K Alternative zu Applet mit HTML-Einbindung AWT, Swing, JavaFX & SWT 11
J Java-Applet beenden AWT, Swing, JavaFX & SWT 3
R Applet aus JFrame starten AWT, Swing, JavaFX & SWT 2
T Konfiguration speichern in Applet AWT, Swing, JavaFX & SWT 2
P Swing Roter Faden beim Applet GUI Programmieren AWT, Swing, JavaFX & SWT 2
T HTML Seite neu laden mittels Applet AWT, Swing, JavaFX & SWT 2
T Icon von Frame ändern - Applet AWT, Swing, JavaFX & SWT 2
T Java Applet beenden AWT, Swing, JavaFX & SWT 2
M Swing Butten & TextFields aus Applet im JFrame nicht sichtbar AWT, Swing, JavaFX & SWT 2
I Swing .Jar Datei - funktioniert - nun als Applet AWT, Swing, JavaFX & SWT 13
S Applet mit Graphics dynamisch vergrößern AWT, Swing, JavaFX & SWT 3
M AWT text im applet formatieren AWT, Swing, JavaFX & SWT 5
1 Verständnisprobleme bei Java Applet AWT, Swing, JavaFX & SWT 13
B Unterschied JFrame/Applet AWT, Swing, JavaFX & SWT 12
T [Applet] startet in Eclipse aber nicht im Browser AWT, Swing, JavaFX & SWT 2
G JSlider in Applet AWT, Swing, JavaFX & SWT 4
P Swing Applet AWT, Swing, JavaFX & SWT 2
R problem mit bildanzeige in applet und main AWT, Swing, JavaFX & SWT 2
A Applet kommt offline nicht mit FileReader zurecht AWT, Swing, JavaFX & SWT 3
F Applet und Popup AWT, Swing, JavaFX & SWT 4
G Wie startet man ein Applet ? AWT, Swing, JavaFX & SWT 4
R Ein Applet von einem Applet öffnen lassen AWT, Swing, JavaFX & SWT 2
Z Applet ausblenden AWT, Swing, JavaFX & SWT 5
G JList wird in einem Applet nur teilweise aktualisiert AWT, Swing, JavaFX & SWT 12
P Applet darstellung von Textfeldern Problem AWT, Swing, JavaFX & SWT 3
I Applet --> neues Fenster öffnen AWT, Swing, JavaFX & SWT 11
I Applet mit Panels (so richtig, gehts besser?) AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben