單選按鈕在GUI程序設計中的概念來自於老式的電子管汽車收音機的機械按鈕:當我們按下一個按鈕時,其它的按鈕就會彈起。因此它允許我們強制從眾多選擇中作出單一選擇。
AWT沒有單獨的描述單選鈕的類;取而代之的是復用復選框。然而將復選框放在單選鈕組中(並且修改它的外形使它看起來不同於一般的復選框)我們必須使用一個特殊的構建器象一個自變量一樣的作用在checkboxGroup對象上。(我們同樣能在創建復選框後調用setCheckboxGroup()方法。)
一個復選框組沒有構建器的自變量;它存在的唯一理由就是聚集一些復選框到單選鈕組裡。一個復選框對象必須在我們試圖顯示單選鈕組之前將它的狀態設置成true,否則在運行時我們就會得到一個異常。如果我們設置超過一個的單選鈕為true,只有最後的一個能被設置成真。
這裡有個簡單的使用單選鈕的例子。注意我們可以像其它的組件一樣捕捉單選鈕的事件:
//: RadioButton1.java // Using radio buttons import java.awt.*; import java.applet.*; public class RadioButton1 extends Applet { TextField t = new TextField("Radio button 2", 30); CheckboxGroup g = new CheckboxGroup(); Checkbox cb1 = new Checkbox("one", g, false), cb2 = new Checkbox("two", g, true), cb3 = new Checkbox("three", g, false); public void init() { t.setEditable(false); add(t); add(cb1); add(cb2); add(cb3); } public boolean action (Event evt, Object arg) { if(evt.target.equals(cb1)) t.setText("Radio button 1"); else if(evt.target.equals(cb2)) t.setText("Radio button 2"); else if(evt.target.equals(cb3)) t.setText("Radio button 3"); else return super.action(evt, arg); return true; } } ///:~
顯示的狀態是一個文字字段在被使用。這個字段被設置為不可編輯的,因為它只是用來顯示數據而不是收集。這演示了一個使用標簽的可取之道。注意字段內的文字是由最早選擇的單選鈕“Radio button 2”初始化的。
我們可以在窗體中擁有相當多的復選框組。