小弟刚学JAVA,在练习Checkbox时碰到一个问题,始终不知道是怎么回事,请大家帮我看看。书上给出的程序如下:import java.awt.*;
import java.awt.event.*;class Checkbox
{
public static void main(String args[])
{
Frame f;
Checkbox cb1,cb2,cb3;

f=new Frame("Test Checkbox");
f.setLayout(new FlowLayout());

cb1=new Checkbox("one",null,true);      //A
cb2=new Checkbox("two",null,true);      //B
cb3=new Checkbox("three",null,true);    //C
 
f.add(cb1);                             //D
f.add(cb2);                             //E
f.add(cb3);                       //F

f.setSize(200,400);
f.setVisible(true);
}
}class Handler implements ItemListener
{
public void itemStateChanged(ItemEvent ev)
{
String state="deselected";
if(ev.getStateChange()==ItemEvent.SELECTED)
{
state="selected";
}
System.out.println(ev.getItem()+" "+state);
}
}问题1:对上面的程序进行编译时,编译器始终说ABCDEF行找不到符号,请问这是怎么回事啊?
问题2:为什么Checkbox不像Button一样,要注册监听器?是书上写掉了吗?如果不是,那Checkbox如何俘获事件并处理呢?谢谢大家了!!

解决方案 »

  1.   

    class Checkbox
    这个地方有问题,你自己的类名字叫Checkbox覆盖了系统java.awt.Checkbox类。所以在你的程序里面使用的时候Checkbox都是指的你现在定义的这个类,
    而他有没有Checkbox(java.lang.String,java.awt.CheckboxGroup,boolean)的构造方法,所以就找不到符号了。
      

  2.   

    问题2:
    Checkbox也要注册监听器,是你的书上漏掉了,事实上他后面的那个handler类就是一个监听类,但在程序里面没有实例化监听对象。
    现在的那个程序他并没有时间处理功能,要有预想的时间处理功能须加上一下代码:
    Handler h=new Handler();
    cb1.addItemListener(h);
    cb2.addItemListener(h);
    cb3.addItemListener(h);
      

  3.   

    朋友...你的代码好像有样东西没加阿.. Container 阿..都没有获得内容面板...怎样加进去阿.? f.getContentPane.add(cb1);                             //D
    f.getContentPane.add(cb2);                             //E
    f.getContentPane.add(cb3);                       //F