AbstractButton
├── JButton // 標準按鈕
├── JToggleButton // 雙態切換 (按下/彈起)
│ ├── JCheckBox // 方框勾選
│ └── JRadioButton // 圓形單選
└── JMenuItem // 選單項 (同屬 AbstractButton)
BasicArrowButton 位於 com.sun.java.swing.plaf.basic,為 **Look & Feel 內部類**,不建議直接使用(跨 L&F 不穩定)。
public class Buttons extends JPanel {
JButton btn = new JButton("JButton");
// 基礎箭頭按鈕 (僅供示範)
BasicArrowButton up = new BasicArrowButton(BasicArrowButton.NORTH);
BasicArrowButton down = new BasicArrowButton(BasicArrowButton.SOUTH);
BasicArrowButton left = new BasicArrowButton(BasicArrowButton.WEST);
BasicArrowButton right = new BasicArrowButton(BasicArrowButton.EAST);
public Buttons() {
add(btn);
add(new JToggleButton("JToggleButton"));
add(new JCheckBox("JCheckBox"));
add(new JRadioButton("JRadioButton"));
JPanel dir = new JPanel();
dir.setBorder(new TitledBorder("Directions"));
dir.add(up); dir.add(down); dir.add(left); dir.add(right);
add(dir);
}
// main()...
}
| 元件 | 狀態 | 視覺 | 典型用途 |
|---|---|---|---|
| JButton | 無狀態 | 矩形按鈕 | 動作觸發 |
| JToggleButton | 按下/彈起 | 按鈕凹陷/彈起 | 工具列開關 |
| JCheckBox | 勾選/未勾選 | 方框 + 文字 | 多選選項 |
| JRadioButton | 選中/未選中 | 圓圈 + 文字 | 單選群組 (需 ButtonGroup) |
| BasicArrowButton | 無狀態 | 四方向箭頭 | Spinner/分頁導航 |
箭頭按鈕常搭配 Spinner 使用:
SpinnerNumberModel:數值增減。SpinnerListModel:字串列表循環。addPropertyChangeListener("value", ...) 監聽值變更。JSpinner 內建按鈕或自定義 JButton + 箭頭圖示。new ButtonGroup().add(radio1).add(radio2)。new JButton(icon) 或 btn.setIcon(icon),配合 setText(null) 純圖示模式。btn.setToolTipText("說明") 所有按鈕通用。btn.getAccessibleContext().setAccessibleName("提交表單")。Swing 按鈕家族以 AbstractButton 為核心,提供豐富的狀態與視覺變體。掌握 **JToggleButton 為雙態基礎、JCheckBox/JRadioButton 為語義特化** 的繼承關係,配合 ButtonGroup 管理互斥,即能構建符合直覺的交互介面。生產環境請優先使用標準元件,避免依賴 BasicArrowButton 等內部實現類。