Hey guys, I am trying to recreate a version of the "Simsimi" app, but i am having trouble referencing the TextBox from Simsimi. I thought about making the Textbox class extend the Simsimi class, or (vice versa), but I am not sure if this is right or the simplest way to do this. Anyway, the way i have it set up, the following error comes up on my screen through the Greenfoot Terminal Window:
"java.lang.NullPointerException
at Simsimi.<init>(Simsimi.java:12)
at world.<init>(world.java:13)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at greenfoot.core.Simulation.newInstance(Simulation.java:520)
at greenfoot.platforms.ide.WorldHandlerDelegateIDE$3.run(WorldHandlerDelegateIDE.java:406)
at greenfoot.core.Simulation.runQueuedTasks(Simulation.java:411)
at greenfoot.core.Simulation.maybePause(Simulation.java:269)
at greenfoot.core.Simulation.runContent(Simulation.java:201)
at greenfoot.core.Simulation.run(Simulation.java:194)"
I have checked line 13 and 12 of the world and Simsimi class respectively, and see no logic nor syntax errors. Please help?
world:
Simsimi:
TextBox Parameter and Method:
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.awt.Color; import java.awt.Point; /** * Write a description of class world here. * * @author (your name) * @version (a version number or a date) */ public class world extends World { TextBox textbox = new TextBox(new Point(250, 100), ""); Simsimi simsim = new Simsimi(); /** * Constructor for objects of class world. * */ public world() { super(600, 400, 1); addObject(textbox, 450, 300); addObject(simsim, 50, 40); Color gold = new Color(255, 215, 0); color(gold); Greenfoot.start(); } public TextBox getTextbox() { return textbox; } public Simsimi getSimsim() { return simsim; } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.awt.Color; /** * Write a description of class Browser here. * * @author (your name) * @version (a version number or a date) */ public class Simsimi extends Actor { world world = (world) getWorld(); TextBox textbox = world.getTextbox(); GreenfootImage img = getImage(); public Simsimi() { img.scale(150, 70); } /** * Act - do whatever the Browser wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { } }
public TextBox(Point size, String text) { this.size = size; this.text = text; caret = text.length(); paint(false); panel.addMouseWheelListener(scroller); } /** * Get the contents of this TextBox. * @return The text in this TextBox. */ public String getText() { return text; }