首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java AWT Radio Button 單選按鈕實作:CheckboxGroup 復用機制與事件處理

     編輯:Java 相關知識

核心機制:Checkbox 復用

AWT 無獨立 RadioButton 類別。單選按鈕由 Checkbox + CheckboxGroup 組合實現:

  • CheckboxGroup:邏輯容器,確保組內同一時間僅一個 Checkbox 為選中狀態
  • new Checkbox(label, group, state):第三參數 true 設為預設選中
  • 組內必須有一個預設選中,否則運行時拋出異常
  • 若設定多個 true,最後一個生效

完整範例:RadioButton1

//: RadioButton1.java
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;
    }
} ///:~

關鍵設計點

1. 文字欄位作狀態顯示

  • setEditable(false) 讓 TextField 成為唯讀標籤,避免使用者誤以為可輸入
  • 初始文字對應預設選中項目 (cb2),保持視覺一致

2. 事件處理

  • 單選按鈕點擊觸發 action() (Java 1.0) / ItemListener (Java 1.1+)
  • 比對 evt.target 識別哪個按鈕被點擊

3. 多組單選按鈕

建立多個 CheckboxGroup 實例,每組獨立互斥,可在同一視窗共存。

現代化對應

技術核心類別關鍵差異
SwingJRadioButton + ButtonGroup獨立類別、支援圖示/文字對齊/邊距、ButtonGroup 邏輯分離、MVC 模型、無需預設選中 (可全不選)
JavaFXRadioButton + ToggleGroup泛型 ToggleGroup、CSS 樣式、屬性綁定 (selectedProperty())、可全不選、動畫過渡
Web<input type="radio" name="group">原生語義、同 name 互斥、無需 JS 邏輯、無障礙支援完整

避坑指南

  1. 預設選中強制要求:AWT 組建時必須有一個 true,否則拋異常。Swing/JavaFX 允許無預設選中。
  2. 多個 true 最後生效:程式碼順序決定預設值,建議明確只設一個 true。
  3. Checkbox 外觀:AWT Checkbox 在群組中自動顯示為圓形單選樣式,無法自訂外觀。Swing/JavaFX 完全可自訂。

總結

AWT 用 Checkbox + CheckboxGroup 模擬單選按鈕,機制簡單但強制預設選中、無獨立類別、外觀固定。Swing JRadioButton + ButtonGroup 與 JavaFX RadioButton + ToggleGroup 實現真正的單選按鈕抽象:邏輯分離、外觀可控、支援無預設選中、完整 MVC/屬性綁定。理解復用機制有助於閱讀舊代碼,新專案請直接使用現代 API。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved