13.8 复选框

复选框提供一个制造单一选择开关的方法;它包括一个小框和一个标签。典型的复选框有一个小的X(或者它设置的其它类型)或是空的,这依靠项目是否被选择来决定的。

我们会使用构造器正常地创建一个复选框,使用它的标签来充当它的参数。如果我们在创建复选框后想读出或改变它,我们能够获取和设置它的状态,同样也能获取和设置它的标签。注意,复选框的大写是与其它的控制相矛盾的。

无论何时一个复选框都可以设置和清除一个事件指令,我们可以捕捉同样的方法做一个按钮。在下面的例子里使用一个文字区域枚举所有被选中的复选框:

  1. //: CheckBox1.java
  2. // Using check boxes
  3. import java.awt.*;
  4. import java.applet.*;
  5. public class CheckBox1 extends Applet {
  6. TextArea t = new TextArea(6, 20);
  7. Checkbox cb1 = new Checkbox("Check Box 1");
  8. Checkbox cb2 = new Checkbox("Check Box 2");
  9. Checkbox cb3 = new Checkbox("Check Box 3");
  10. public void init() {
  11. add(t); add(cb1); add(cb2); add(cb3);
  12. }
  13. public boolean action (Event evt, Object arg) {
  14. if(evt.target.equals(cb1))
  15. trace("1", cb1.getState());
  16. else if(evt.target.equals(cb2))
  17. trace("2", cb2.getState());
  18. else if(evt.target.equals(cb3))
  19. trace("3", cb3.getState());
  20. else
  21. return super.action(evt, arg);
  22. return true;
  23. }
  24. void trace(String b, boolean state) {
  25. if(state)
  26. t.appendText("Box " + b + " Set\n");
  27. else
  28. t.appendText("Box " + b + " Cleared\n");
  29. }
  30. } ///:~

trace()方法将选中的复选框名和当前状态用appendText()发送到文字区域中去,所以我们看到一个累积的被选中的复选框和它们的状态的列表。