Wątek przeniesiony 2015-01-14 17:35 z Java przez bogdans.

Aplet-problem z kwadratem

0

Witam,

napisałem swój pierwszy aplet jego działanie polega na przesuwającym się kwadracie po ekranie. Jestem początkującym i prosiłbym o pomoc w znalezieniu błędu

import java.awt.Color;
import java.applet.Applet;
import java.awt.Graphics;
import java.util.Timer;
import java.util.TimerTask;
public class asdf extends Applet

{
    Applet aplyt=this;
asdf zadanie=new asdf();
    static Applet applet;
    int kierunek=1;
    int poz1=0;
    int poz2=0;
    int licznik=0;

    
    public void init()        
    {   
        
    applet=this;
        this.setSize(600, 400);
        this.setBackground(Color.BLACK);
         
    }

 public void paint(Graphics g)
 {
     g.setColor(Color.CYAN);
     g.fillRect(zadanie.poz1, zadanie.poz2, 100, 100);
 
 
 }
 public void run(){
   
 
 
       
     switch(kierunek)
     {
     case 1: 
     licznik++;
     poz1++;
     if(licznik==200)
     {
     licznik=0;
     kierunek=2;
 }
     break;
     case 2:
     licznik++;
     poz2++;
     if(licznik==200)
     {licznik=0;
     kierunek=3;
 }
     break;
     case 3:
     licznik++;
     poz1--;
     if(licznik==200)
     {licznik=0;
     kierunek=4;
 }
     break;
     case 4:
     licznik++;
     poz2--;
     if(licznik==200); 
     {
         licznik=0;
     kierunek=1;
 }
     break;
     
    
 
     }
 }
 

  
        
}
0

Co krzyczy kompilator podczas działania na twoim naplecie?

0

run:

java.lang.StackOverflowError
	at java.security.AccessControlContext.optimize(AccessControlContext.java:557)
	at java.security.AccessController.getContext(AccessController.java:826)
	at java.awt.Component.<init>(Component.java:477)
	at java.awt.Container.<init>(Container.java:281)
	at java.awt.Panel.<init>(Panel.java:64)
	at java.awt.Panel.<init>(Panel.java:56)
	at java.applet.Applet.<init>(Applet.java:65)
	at asdf.<init>(asdf.java:6)
	at asdf.<init>(asdf.java:10)
	at asdf.<init>(asdf.java:10)
	at asdf.<init>(asdf.java:10)
	at asdf.<init>(asdf.java:10)
	at asdf.<init>(asdf.java:10)
1

W wierszu

asdf zadanie=new asdf();

tworzysz nieskończoną rekurencję, każde utworzenie apletu tworzy kolejny aplet.
Wszystkie pola typu Applet są całkowicie zbędne, rozmiar apletu ustala się w pliku HTML, nie w kodzie apletu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1