A
Andrew
Hello,
I am writing a very simple programs which displays a different coloured
target depending on what colour has been selected (using a combo box).
I have an abstract class called Target and three classes called GreenTarget,
RedTarget and YellowTarget which all extend Target.
Each subclass has a method called getColourIndex which returns an integer
relating to the correct coloured target to load in the images array.
To select the colour and return the correct subclass, I have used the
following code.
class Test extends Panel implements ActionListener
{
String colour;
Choice ch = new Choice();
Target t;
int colourIndex;
Button display = new Button("Display");
Image[] images = new Image[3];
init()
{
// Load Images
ch.add("Red");
ch.add("Yellow");
ch.add("Green");
add(ch);
add(display);
}
public void actionPerformed(ActionEvent evt)
{
colour = ch.getSelectedItem();
if(colour.equals("Red"))
t = new RedTarget();
if(colour.equals("Yellow"))
t = new YellowTarget();
if(colour.equals("Green"))
t = new GreenTarget();
colourIndex = t.getColourIndex();
repaint();
}
public void paint(Graphics g)
{
g.drawImage(images[colourIndex],0,0,this);
}
}
How could this code be better? How can I rearrange the code so that I am not
asking for raw data (the image indexes) from the subclasses?
Should I pass the Graphics object in the paint() method to one of the
subclasses?
Also, should the images be loaded in the init() method or should each
subclass load their own image?
I hope someone can help because I am always having this problem.
I have read the MVC pattern but I am finding it hard to understand.
I am writing a very simple programs which displays a different coloured
target depending on what colour has been selected (using a combo box).
I have an abstract class called Target and three classes called GreenTarget,
RedTarget and YellowTarget which all extend Target.
Each subclass has a method called getColourIndex which returns an integer
relating to the correct coloured target to load in the images array.
To select the colour and return the correct subclass, I have used the
following code.
class Test extends Panel implements ActionListener
{
String colour;
Choice ch = new Choice();
Target t;
int colourIndex;
Button display = new Button("Display");
Image[] images = new Image[3];
init()
{
// Load Images
ch.add("Red");
ch.add("Yellow");
ch.add("Green");
add(ch);
add(display);
}
public void actionPerformed(ActionEvent evt)
{
colour = ch.getSelectedItem();
if(colour.equals("Red"))
t = new RedTarget();
if(colour.equals("Yellow"))
t = new YellowTarget();
if(colour.equals("Green"))
t = new GreenTarget();
colourIndex = t.getColourIndex();
repaint();
}
public void paint(Graphics g)
{
g.drawImage(images[colourIndex],0,0,this);
}
}
How could this code be better? How can I rearrange the code so that I am not
asking for raw data (the image indexes) from the subclasses?
Should I pass the Graphics object in the paint() method to one of the
subclasses?
Also, should the images be loaded in the init() method or should each
subclass load their own image?
I hope someone can help because I am always having this problem.
I have read the MVC pattern but I am finding it hard to understand.