2016-05-12 18 views
0

我在使用JFrame「位置」的主類中使用setter方法時遇到了問題。 JFrame的活動部分(三角形稱爲「烏龜」正在移動)離開JFrame,當發生這種情況時,我的當前方法無法正常工作。任何幫助將不勝感激,因爲我一直堅持幾天。安裝程序看起來不能在主要方法中工作

wrapPosition方法設計用來改變座標,如果它們離開(800x600)像素的「屏幕」。這個檢查是在循環中,所以一隻烏龜永遠不會離開屏幕。

這裏是主類:

import javax.swing.*; 
import java.awt.*; 
import java.util.ArrayList; 

class Lab7b 
{ 

    public static void main(String [ ] args) 
    { 
     int deltaTime = 50; 
     JFrame frame = new JFrame(); 
     Canvas canvas = new Canvas();      
     frame.setTitle("Welcome to turtle land!"); 
     frame.setSize(800, 600); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
     frame.setVisible(true); 
     frame.add(canvas);    

     ArrayList<DynamicTurtle> turtles = new ArrayList<DynamicTurtle>(); //An ArrayList containing Turtle elemenets 

       turtles.add(new RandomTurtleA(turtleCanvas, 400, 300)); 
     turtles.add(new RandomTurtleA(turtleCanvas, 400, 300)); 
     turtles.add(new RandomTurtleA(turtleCanvas, 400, 300));    

     while(true) 
     { 
      for (int i = 0; i < turtles.size(); i++) 
      { 
       (turtles.get(i)).unDrawTurtle(); 
       hello.setText("X: " + (turtles.get(i)).getPositionX() + " Y: " + (turtles.get(i)).getPositionY()); //print to JFRAME 
       System.out.println("X: " + (turtles.get(i)).getPositionX() + " Y: " + (turtles.get(i)).getPositionY()); //print to CMD 

       (turtles.get(i)).wrapPosition((turtles.get(i)).getPositionX(), (turtles.get(i)).getPositionY()); //this is the wrapPosition method that does not work 
      } 

      for (int i = 0; i < turtles.size(); i++) 
      { 
       (turtles.get(i)).update(1000); 
      } 

      for (int i = 0; i < turtles.size(); i++) 
      { 
       (turtles.get(i)).drawTurtle();    
      } 

     Utils.pause(deltaTime/2); 
     } 
    } 
} 

龜類的麻煩wrapPosition方法:

class Turtle 
{ 
    protected Canvas canvas; // private field reference to a canvas private   
    private CartesianCoordinate myLocation, oldLocation; 
    private boolean penDown = true; 
    private double Angle, maxX, maxY, x, y; 
    public double d, e, first, second; 


    public Turtle(Canvas canvas, CartesianCoordinate initLocation) 
    { 
     this.canvas = canvas; 
     this.myLocation = new CartesianCoordinate(0,0); 
     Angle = 0; 
     penDown = true; 
     myLocation = initLocation.copy();   
    } 

    public void wrapPosition(double x, double y) 
    { 
     this.x = maxX; 
     this.y = maxY; 

     if(maxX < 0) 
     { 
      this.setPositionX(800); 
     } 

     if(maxX > 800) 
     { 
      this.setPositionX(0); 
     } 

     if(maxY < 0) 
     { 
      this.setPositionY(600); 
     } 

     if(maxY > 600) 
     { 
      this.setPositionY(0); 
     }   
    } 


    public double getPositionX() 
    { 
     double getPosX; 
     getPosX = myLocation.getX(); 
     return getPosX; 
    } 

    public double getPositionY() 
    { 
     double getPosY; 
     getPosY = myLocation.getY(); 
     return getPosY; 
    } 

    public void setPositionX(double x) 
    { 
     myLocation.setX(x); 
    } 

    public void setPositionY(double y) 
    {   
     myLocation.setY(y); 
    }  
} 

而且,如果是任何幫助協調類:

class CartesianCoordinate 
{ 
    private double xPosition, yPosition, setterX, setterY; 

    public CartesianCoordinate(double x, double y) 
    { 
     this.xPosition = x; 
     this.yPosition = y; 
    } 

    public double getX() 
    { 
     return this.xPosition; 
    } 

    public double getY() 
    { 
     return this.yPosition; 
    } 

    public void setX(double setterX) 
    { 
     this.setterX = xPosition; 
    } 

    public void setY(double setterY) 
    { 
     this.setterY = yPosition; 
    } 
} 

任何幫助將不勝感激。先謝謝你。

回答

1

CartesianCoordinateCartesianCoordinate類中的「setters」幾乎沒有做任何事情,因爲它們只是分配給未讀取的成員變量。

public void setX(double setterX) 
{ 
    this.setterX = xPosition; 
} 

public void setY(double setterY) 
{ 
    this.setterY = yPosition; 
} 

嘗試這些,而不是有座標讀取更新:

public void setX(double setterX) 
{ 
    this.xPosition= setterX; 
} 

public void setY(double setterY) 
{ 
    this.yPosition= setterY; 
} 
+0

THANKYOU SO MUCH !!!!!!!!!!!是!!!!!!!! –

+0

如果它有助於解決問題,請[接受答案](http://meta.stackexchange.com/a/5235/155831)。 –

相關問題