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

Swing 按鈕家族全覽:JButton 到 BasicArrowButton 的型態與行為

     編輯:Java 相關知識

按鈕繼承體系


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 整合示範 (概念)

箭頭按鈕常搭配 Spinner 使用:

  • SpinnerNumberModel:數值增減。
  • SpinnerListModel:字串列表循環。
  • 監聽器採用 **Bean 模式**:addPropertyChangeListener("value", ...) 監聽值變更。

最佳實踐建議

  1. 避免直接使用 BasicArrowButton:改用 JSpinner 內建按鈕或自定義 JButton + 箭頭圖示。
  2. 單選必加 ButtonGroup:new ButtonGroup().add(radio1).add(radio2)。
  3. 圖示按鈕:new JButton(icon) 或 btn.setIcon(icon),配合 setText(null) 純圖示模式。
  4. 工具提示:btn.setToolTipText("說明") 所有按鈕通用。
  5. 無障礙:btn.getAccessibleContext().setAccessibleName("提交表單")。

結語

Swing 按鈕家族以 AbstractButton 為核心,提供豐富的狀態與視覺變體。掌握 **JToggleButton 為雙態基礎、JCheckBox/JRadioButton 為語義特化** 的繼承關係,配合 ButtonGroup 管理互斥,即能構建符合直覺的交互介面。生產環境請優先使用標準元件,避免依賴 BasicArrowButton 等內部實現類。

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