PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Applet neuzeichnen



BenNavis
10-12-2004, 15:41
Hi,

ich habe mir eine kleine Java-Anwendung geschrieben, in der jede Sekunde die Oberfläche neu gezeichnet wird. Als stand-alone klappt das auch, aber wenn ich daraus ein Applet mache, dann klappt das neuzeichnen nicht mehr.
Kann mir jemand weiterhelfen?

Danke,
B.

Lin728
10-12-2004, 17:19
Wie machst du denn das genau?

BenNavis
10-12-2004, 17:26
Wie machst du denn das genau?
Das neuzeichnen?
so:

public void go() {
while(true) {
try {
repaint();
Thread.sleep(1000);
}
catch (InterruptedException e) {
return;
}
}
}

public class test extends Applet {
public void init() {
Applet app = new Applet();
app.go();
}
}

KL47
11-12-2004, 01:50
Vielleicht ne etwas andere Methode: Einfach, wenn das Applet startet, das Programm als Fenster anzeigen. Wenn du das ganze kompilierst, kannst du das als Applet verwenden, indem du <applet src="MainApplet.class"></applet> in ein HTML-Dokument einfügst, oder als normale Applikation verwenden, indem du java Main eingibst. Dann musst du alles nur einmal programmieren...

MainApplet.java:

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

public class MainApplet extends JApplet
{
public void init()
{
String args[] = {};

Main.main(args);
}

public void paint (Graphics g)
{
g.drawString("Titel der Anwendung...", 15, 15);
}
}
Main.java:

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

public class Main extends JFrame
{
public Main()
{
super("Titel der Anwendung");
setSize(450, 450);
}

public static void main (String args[])
{
new Main().show();
}
}

Lin728
11-12-2004, 15:16
versuch mal paint(Toolkit.getGraphics(this)) oder so, damit forderst du ein graphics-object explizit an, ich hab auch schon öfters von solchen Problemen gehört.

Und nicht vergessen, am schluss g.dispose(), sonst muss das der finalizer machen und inzwischenzeit gehen dir die handles aus.

BenNavis
14-12-2004, 11:14
Vielleicht ne etwas andere Methode: Einfach, wenn das Applet startet, das Programm als Fenster anzeigen. Wenn du das ganze kompilierst, kannst du das als Applet verwenden, indem du <applet src="MainApplet.class"></applet> in ein HTML-Dokument einfügst, oder als normale Applikation verwenden, indem du java Main eingibst. Dann musst du alles nur einmal programmieren...

Sorry, dass ich mich erst jetzt melde, ich war verhindert...

Ich verstehe nicht, was Du damit meinst. Ein Applet darf doch keine main Methode haben, oder? <applet src... hab ich in mein HTML-Dokument ingefügt. Das Applet wird ja auch angezeigt, aber der refresh kommt halt nicht alle 1000ms sondern nur wenn das Fenster über den WM neugezeichnet wird.

BenNavis
14-12-2004, 11:16
versuch mal paint(Toolkit.getGraphics(this)) oder so, damit forderst du ein graphics-object explizit an, ich hab auch schon öfters von solchen Problemen gehört.

Und nicht vergessen, am schluss g.dispose(), sonst muss das der finalizer machen und inzwischenzeit gehen dir die handles aus.

lg Clemens

getGraphics() wird mir von eclipse nicht als Methode angeboten.

Lin728
14-12-2004, 11:43
java.awt.Component.getGraphics() -> disposen wennst fertig bist oder am besten sharen.

FPhilipp
16-12-2004, 16:00
validate() statt repaint() ?

Grüße,
FP