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

Swing 圖示應用全攻略:JButton 狀態圖示與工具提示

     編輯:Java 相關知識

核心概念

所有繼承 AbstractButton 的元件(JButton、JCheckBox、JRadioButton、JMenuItem 等)及 JLabel 均支援 Icon 介面。ImageIcon 是最常用實現,直接載入 GIF/PNG/JPG 檔案。

完整範例:Faces


public class Faces extends JPanel {
    static Icon[] faces = {
        new ImageIcon("face0.gif"), new ImageIcon("face1.gif"),
        new ImageIcon("face2.gif"), new ImageIcon("face3.gif"),
        new ImageIcon("face4.gif")
    };

    JButton btn = new JButton("JButton", faces[3]); // 初始圖示
    JButton toggleBtn = new JButton("Disable");
    boolean mad = false;

    public Faces() {
        // 點擊切換圖示
        btn.addActionListener(e -> {
            btn.setIcon(mad ? faces[3] : faces[0]);
            mad = !mad;
            btn.setVerticalAlignment(JButton.TOP);
            btn.setHorizontalAlignment(JButton.LEFT);
        });

        // 狀態專用圖示
        btn.setRolloverEnabled(true);        // 啟用滑鼠懸停
        btn.setRolloverIcon(faces[1]);       // 懸停圖示
        btn.setPressedIcon(faces[2]);        // 按下圖示
        btn.setDisabledIcon(faces[4]);       // 禁用圖示
        btn.setToolTipText("Yow!");          // 工具提示

        add(btn);

        // 禁用/啟用切換
        toggleBtn.addActionListener(e -> {
            btn.setEnabled(!btn.isEnabled());
            toggleBtn.setText(btn.isEnabled() ? "Disable" : "Enable");
        });
        add(toggleBtn);
    }
    // main()...
}

圖示狀態對應表

方法觸發時機視覺回饋
setIcon()預設狀態基礎外觀
setRolloverIcon()滑鼠進入區域 (需 setRolloverEnabled(true))懸停預覽
setPressedIcon()滑鼠按下未釋放按下效果
setDisabledIcon()setEnabled(false)灰化/禁用狀態
setSelectedIcon()選中狀態 (JToggleButton 等)選中標記

對齊與佈局微調


btn.setVerticalAlignment(JButton.TOP);    // 垂直靠上
btn.setHorizontalAlignment(JButton.LEFT); // 水平靠左
btn.setIconTextGap(8);                    // 圖文間距

工具提示最佳實踐

  • 簡潔明確:setToolTipText("儲存檔案 (Ctrl+S)")。
  • HTML 富文本:setToolTipText("刪除
    永久移除項目")
    。
  • 延遲顯示:ToolTipManager.sharedInstance().setInitialDelay(500)。

資源管理建議

  1. 圖示檔案放入 **classpath** (src/main/resources),使用 getClass().getResource("/icons/save.png") 載入,打包 JAR 後仍可訪問。
  2. 大量圖示建議使用 **圖示字體** (FontAwesome) 或 **SVG 轉碼** 減少 IO。
  3. 共用圖示實例:static final Icon SAVE_ICON = new ImageIcon(...) 避免重複載入。

結語

Swing 圖示系統透過**狀態專用圖示**機制,以極簡 API 賦予按鈕豐富的視覺回饋。善用 Rollover/Pressed/Disabled 圖示搭配工具提示,能大幅提升介面專業度與易用性。記住:圖示資源請納入 classpath 管理,確保部署一致性。

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