jcreator 
	 
	
		| Author | 
		Message | 
	 
		 
		RyanHB
 
 
 
    
		 | 
		
		
			
				  Posted: Tue Oct 20, 2009 8:11 am    Post subject: jcreator  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				This is the client class. Below the client class I have placed the actual class which is called upon..mutators etc.. I am getting this error message: 
 
 
Exception in thread "main" java.lang.NullPointerException
 
    at Face.<init>(Face.java:19)
 
    at Face.<init>(Face.java:27)
 
    at SmileTest.main(SmileTest.java:29)
 
 
---------------------------------------------------------
 
 
import TerminalIO.*;
 
import TurtleGraphics.*;
 
import java.awt.Color;
 
import javax.swing.JColorChooser;
 
 
public class SmileTest {
 
        
 
 
 
    public static void main(String[] args) {
 
    KeyboardReader reader= new KeyboardReader();
 
    double x,y, radius;
 
    int mood=0;
 
    
 
    
 
    //Reds in the Initial x & y Positions 
 
    x= reader.readDouble("Initial x position: ");
 
    y= reader.readDouble ("Initial y position: ");
 
 
    //Size of the FACE
 
    radius = reader.readDouble("Set the size of the face: ");
 
   
 
    mood= reader.readInt("1= Happy, 2= Sad: " );
 
    
 
    // JCreator Colour pad 
 
    JColorChooser jcc= new JColorChooser();
 
    Color c = jcc.showDialog (null, "Pick a colour for the face: ", Color.blue );
 
    
 
   // Create the Basic Face
 
    Face smile = new Face(x , y);
 
    smile.setRadius(radius);
 
   if (mood==2)
 
    	smile.setMood(false);
 
    else
 
        smile.setMood(true);
 
    	smile.setColor(c);
 
    	reader.pause();
 
    
 
    smile.draw();
 
    
 
    while (true){
 
    	x=reader.readDouble("New x position: ");
 
    	y=reader.readDouble ("New y position:" );
 
    	radius= reader.readDouble("set the size of the face: " );
 
    	mood=reader.readInt("1= Happy, 2= Sad: " );
 
    	c=jcc.showDialog(null, "Pick a new colour for the face", Color.blue);
 
    	smile.erase();
 
    	smile.setColor(c);
 
    	smile.setRadius(radius);
 
    	if (mood==2)
 
    		smile.setMood(false);
 
    	else
 
    		smile.setMood(true);
 
    	smile.move(x,y);
 
    	smile.draw();
 
    }
 
    }
 
}
 
 
 
-------------------------
 
Class with mutators etc.. 
 
 
import TurtleGraphics.*;
 
import java.awt.Color;
 
 
public class Face {
 
	private StandardPen pen;
 
	private double xPosition, yPosition ;
 
	private boolean mood;
 
	private double radius;
 
	private Color colour;
 
	
 
	
 
        
 
   
 
    public Face() {
 
    xPosition = 0;
 
    yPosition = 0;   
 
    radius= 0;
 
    mood= true;
 
    pen.setColor(Color.red);
 
    pen = new StandardPen();
 
    
 
    
 
    }
 
    
 
    
 
   public Face (double x, double y){
 
   	this();
 
   	xPosition=x;
 
   	yPosition=y;
 
   	
 
   }
 
   
 
   public void draw(){
 
   	
 
   	//Draw the outline of the face
 
   	drawCircle(xPosition, yPosition, radius);
 
   	//Draw the left, then the right, eye.
 
   	drawCircle(xPosition - radius /2.5, yPosition +radius /3, radius /4);
 
   	drawCircle(xPosition + radius /2.5, yPosition +radius /3, radius /4);
 
   	//Draw the horizontal part of the mouth
 
   	drawLine(xPosition - radius/3, yPosition - radius/2, xPosition + radius/3, yPosition - radius/2);
 
   	if (mood==false){
 
   	
 
   	//Draw the left smile line
 
   	drawLine(xPosition - radius /3, yPosition - radius/2,xPosition - radius /3 - 5, yPosition - radius/2+5); 
 
   	
 
   	//Draw the right smile line
 
   	drawLine(xPosition + radius /3, yPosition-radius/2,xPosition + radius /3 +5, yPosition-radius/2+5);
 
   	}else{
 
   	
 
   	//Draw the left frown line
 
   	drawLine(xPosition - radius /3, yPosition - radius/2,xPosition - radius /3 - 5, yPosition - radius/2-5); 
 
   	
 
   	//Draw the right frown line
 
   	drawLine(xPosition + radius /3, yPosition-radius/2,xPosition + radius /3 +5, yPosition-radius/2-5);
 
   	}
 
   }
 
   
 
   public void erase (){
 
   	//Sets the colour to white
 
   	pen.setColor(Color.white);
 
   	//Draws so that it covers the old drawing
 
   	draw();
 
   	//Returns the new colour (white) to the old colour (whatever it was)
 
  	pen.setColor(colour);
 
   }
 
   
 
   public void move(double x, double y){
 
   	xPosition=x;
 
   	yPosition=y;
 
   }
 
   
 
   private void drawCircle (double x, double y, double r){
 
   	//Draws the face
 
   	double side= 2.0* Math.PI * r/120.0;
 
   pen.setColor(colour);
 
   	pen.up();
 
   	pen.move(x+r, y - side/ 2.0);
 
   	pen.setDirection (90);
 
   	pen.down();
 
   	for(int i= 0; i<120; i++){
 
   		pen.move(side);
 
   		pen.turn(3);
 
   	}
 
   	
 
   
 
}
 
 
public void drawLine (double x1, double y1, double x2, double y2){
 
 pen.up();
 
 pen.move(x1,y1);
 
 pen.down();
 
 pen.move(x2,y2);
 
 
}
 
 
public void setMood (boolean md){
 
	mood=md;
 
 
}
 
public void setRadius (double rd){
 
	//Sets the radius of the circle
 
	radius=rd;
 
	
 
}
 
public void setColor (Color cl){
 
	colour = cl;
 
	pen.setColor(colour);
 
	
 
}
 
}
 
 
 
thanks, | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		DemonWasp
 
 
 
    
		 | 
		
		
			
				  Posted: Tue Oct 20, 2009 8:36 am    Post subject: RE:jcreator  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				The Face ( double x, double y ) constructor is calling the Face () constructor, which is accessing the pen variable before it's initialized. Put the initialization ( the "pen = new StandardPen()" line ) before the access to set its colour.
 
 
This is a relatively simple problem. Read the error it gives you, it shows the line numbers you need to look at and tells you more-or-less what the problem is. | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		RyanHB
 
 
 
    
		 | 
		
		
			
				  Posted: Thu Oct 22, 2009 10:25 am    Post subject: RE:jcreator  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				Alright, that worked... The programs fixed. THanks   | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		 | 
	 
 
	
	
	 
	
	 |