I am trying to compile example 1-2 from the Java In A Nutshell Book that deals with Java 1.0. I get an error saying that choice cannot be converted to Button. Now, I don't know whether this is an issue of current Java not supporting the libraries that I am calling, or the something is off.
The applet is supposed to be a sort of drawing pad, and the error is at line 14 / clear_button = new Choice();
import java.applet.*;
import java.awt.*;
public class Scribble extends Applet {
private int last_x = 0;
private int last_y = 0;
private Color current_color = Color.black;
private Button clear_button;
private Choice color_choices;
public void init(){
this.setBackground(Color.white);
clear_button = new Choice();
clear_button.setForeground(Color.black);
clear_button.setBackground(Color.lightGray);
this.add(clear_button);
color_choices = new Choice();
color_choices.addItem("black");
color_choices.addItem("red");
color_choices.addItem("yellow");
color_choices.addItem("green");
color_choices.setForeground(Color.black);
color_choices.setBackground(Color.lightGray);
this.add(new Label("Color: "));
this.add(color_choices);
}
public boolean mouseDown(Event e, int x, int y){
last_x = x; last_y = y;
return true;
}
public boolean mouseDrag(Event e, int x, int y){
Graphics g = this.setGraphics();
g.setColor(current_color);
g.drawline(last_x, last_y, x, y);
last_x = x;
last_y = y;
return true;
}
public boolean action(Event event, Object arg) {
if (event.target == clear_button) {
Graphics g = this.getGraphics();
Rectangle r = this.bounds();
g.setColor(this.getBackground());
g.fillRect(r.x, r.y, r.width, r.height);
return true;
}
else if (event.target == color.choices) {
if (arg.equals("black")) current_color = color.black;
else if (arg.equals("red")) current_color = color.red;
else if (arg.equals("yellow")) current_color = color.yellow;
else if (arg.equals("green")) current_color = color.green;
return true;
}
else return super.action(event, arg);
}
}