kostenloser Webspace werbefrei: lima-city


Java_Applet

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    javaphp

    Kostenloser Webspace von javaphp

    javaphp hat kostenlosen Webspace.

    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?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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

  4. Autor dieses Themas

    javaphp

    Kostenloser Webspace von javaphp

    javaphp hat kostenlosen Webspace.

    ok, danke pawnee jetzt wird gezeichnet.;-)
    -------------------------------------------------------

    leider wird aber beim zeichnen das alte feld nicht gelöscht. :mad:

    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
  5. 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
  6. 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
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!