Java_Applet
lima-city → Forum → Programmiersprachen → Java
applet
code
dank
ersten probleme
genau wissen
import
methode
millisekunde
null
panel
rechteck
run
start
swing
system
test
testen
url
versuch
zeichnen
-
Hi
Ich beschäftige mich seit einiger Zeit das erste mal mit Applets. .... Schon kommen die ersten Probleme. :(
Ich habe 2 Java Datein:
import java.awt.*; import javax.swing.*; public class Verkehrtest extends JApplet implements Runnable{ private Thread runner; private Autotest testen =new Autotest(); public void init(){ } public void start(){ if(runner==null){ runner = new Thread(this); runner.start(); } } public void run(){ while(Thread.currentThread()==runner){ try{ Thread.currentThread().sleep(500); //msc }catch(InterruptedException e){ e.printStackTrace(); } System.out.println("TEST"); testen.testen(); } } public void stop(){ } public void paint(Graphics g){ g.drawRect(50,50,100,100); } }
Diese ruft dann nach 500 millisekunden die Methode in dieser Klasse auf.
import java.awt.*; import javax.swing.*; public class Autotest extends JApplet{ public void testen(){ System.out.println("zeichnen"); repaint(); } protected void paintComponent(Graphics g){ g.drawRect(30,30,40,40); } }
Leider wird dabei nur das erste Rechteck gezeichnet und nicht beide. Kann mir jemand von euch helfen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Moin,
Du benutzt da zwei JApplets, was so gar nicht funktionieren kann.
Ein Applet innerhalb von einem Applet ist ein wenig sinnlos.
Außerdem überschreibst Du in der ersten Klasse paint und in der zweiten paintComponent.
Du solltest Dich für eine entscheiden.
Ich rate Dir eher dazu, ein Panel zu erstellen, auf das Du Deine grafischen Elemente zeichnest.
Und darin solltest Du die paintComponent-Methode überschreiben.
Gruß,
Pawnee
-
ok, danke pawnee jetzt wird gezeichnet.
-------------------------------------------------------
leider wird aber beim zeichnen das alte feld nicht gelöscht.
Hier nochmal meine 2 Applets.
import java.awt.*; import javax.swing.*; public class Verkehrtest extends JApplet implements Runnable{ private Thread runner; private Autotest testen =new Autotest(); public void init(){ Container c = getContentPane(); c.setLayout(new BorderLayout()); c.add(testen,BorderLayout.CENTER); } public void start(){ if(runner==null){ runner = new Thread(this); runner.start(); } } public void run(){ while(Thread.currentThread()==runner){ try{ Thread.currentThread().sleep(20); //msc }catch(InterruptedException e){ e.printStackTrace(); } System.out.println("TEST"); testen.testen(); } } public void stop(){ } }
import java.awt.*; import javax.swing.*; public class Autotest extends JPanel{ public Autotest(){ this.x=50; this.y=50; } private int x; private int y; public void testen(){ x=(x+1)%getHeight(); //y=y-1; System.out.println("zeichnen"); repaint(); } protected void paintComponent(Graphics g){ g.drawRect(x,y,40,40); } }
------
edit: danke pawnee, jetzt funktioniert es
Beitrag zuletzt geändert: 23.1.2009 19:55:01 von javaphp -
Moin,
versuch's mal damit:
protected void paintComponent(Graphics g){ super.paintComponent(g); g.drawRect(x,y,40,40); }
Sollte eventuell funktionieren, zumindest nutze ich das so.
Gruß,
Pawnee
Beitrag zuletzt geändert: 23.1.2009 19:41:21 von pawnee -
pawnee schrieb: Moin,
versuch's mal damit:
protected void paintComponent(Graphics g){ super.paintComponent(g); g.drawRect(x,y,40,40); }
Du kannst auch immer wenn der Nutzer etwas ändert repaint() aufrufen. Schau dir mal das an: http://prog.lima-city.de/html/mathe/thaleskreis.php Da hab ich auch auf einen JFrame was gezeichnet.
Wenn du genau wissen willst wie ich das gemacht hab, kann ich teile des Quellcodes geben.
Grüße,
Prog -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage