new Checkbox(label) 或 new Checkbox(label, state)getState() / setState(boolean)getLabel() / setLabel(String)action() (Java 1.0) / ItemListener (Java 1.1+)//: CheckBox1.java
import java.awt.*;
import java.applet.*;
public class CheckBox1 extends Applet {
TextArea t = new TextArea(6, 20);
Checkbox cb1 = new Checkbox("Check Box 1");
Checkbox cb2 = new Checkbox("Check Box 2");
Checkbox cb3 = new Checkbox("Check Box 3");
public void init() {
add(t); add(cb1); add(cb2); add(cb3);
}
public boolean action(Event evt, Object arg) {
if (evt.target.equals(cb1)) trace("1", cb1.getState());
else if (evt.target.equals(cb2)) trace("2", cb2.getState());
else if (evt.target.equals(cb3)) trace("3", cb3.getState());
else return super.action(evt, arg);
return true;
}
void trace(String id, boolean state) {
if (state) t.appendText("Box " + id + " Set\n");
else t.appendText("Box " + id + " Cleared\n");
}
} ///:~
appendText() (Java 1.0) / append() (1.1+) 在現有內容後追加,不覆蓋JTextArea + DefaultCaret 自動捲動| 技術 | 核心類別 | 增強功能 |
|---|---|---|
| Swing | JCheckBox | 圖示/文字相對位置、邊距、對齊、Mnemonics (Alt+鍵)、Action 共用邏輯、ButtonModel 狀態模型 |
| JavaFX | CheckBox | 三態支援 (INDETERMINATE)、CSS 樣式、屬性綁定 (selectedProperty())、動畫、allowIndeterminate |
| Web | <input type="checkbox"> | 原生語義、indeterminate 屬性 (JS 設定)、無障礙完整支援 |
TitledBorder (Swing) / TitledPane (JavaFX) / <fieldset> (Web) 視覺分組。Preferences API / Properties / JSON 儲存使用者偏好。Checkbox 是「獨立布林開關」的最小單元:API 極簡、行為明確。TextArea.appendText() 累積顯示是事件追蹤的經典技巧。現代 JCheckBox/CheckBox 增加三態、綁定、樣式、無障礙等企業級功能,但核心「獲取/設定布林狀態」不變。理解基礎機制,輕鬆駕馭進階框架。