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