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

[Java GUI 範例] JCheckBox 多選框動態圖片合成演示

     編輯:Java 相關知識

程式功能

四個 JCheckBox 分別控制「下巴、眼鏡、頭髮、牙齒」四個特徵,根據勾選組合動態拼湊圖片檔名(如 geek-cght.gif),即時顯示合成頭像。

核心邏輯

public class CheckBoxDemo extends JPanel implements ItemListener {
    JCheckBox chinButton, glassesButton, hairButton, teethButton;
    StringBuffer choices = new StringBuffer("cght"); // 預設全選
    JLabel pictureLabel;

    public CheckBoxDemo() {
        // 建立四個 CheckBox,設定助記鍵、預設勾選
        chinButton = new JCheckBox("下巴(c)"); chinButton.setMnemonic(KeyEvent.VK_C); chinButton.setSelected(true);
        // ... glassesButton(g), hairButton(h), teethButton(t) 同理
        chinButton.addItemListener(this); // 統一監聽

        pictureLabel = new JLabel();
        updatePicture(); // 初始顯示

        JPanel checkPanel = new JPanel(new GridLayout(0,1));
        checkPanel.add(chinButton); checkPanel.add(glassesButton);
        checkPanel.add(hairButton); checkPanel.add(teethButton);
        add(checkPanel, BorderLayout.LINE_START);
        add(pictureLabel, BorderLayout.CENTER);
    }

    public void itemStateChanged(ItemEvent e) {
        int index = 0; char c = '-';
        Object src = e.getItemSelectable();
        if (src == chinButton) { index=0; c='c'; }
        else if (src == glassesButton) { index=1; c='g'; }
        else if (src == hairButton) { index=2; c='h'; }
        else if (src == teethButton) { index=3; c='t'; }

        if (e.getStateChange() == ItemEvent.DESELECTED) c = '-';
        choices.setCharAt(index, c);
        updatePicture();
    }

    protected void updatePicture() {
        ImageIcon icon = createImageIcon("images/geek/geek-" + choices + ".gif");
        pictureLabel.setIcon(icon);
        pictureLabel.setToolTipText(choices.toString());
        if (icon == null) pictureLabel.setText("沒有發現圖片");
        else pictureLabel.setText(null);
    }
    // createImageIcon 載入資源...
}

設計亮點

  • 用 StringBuffer 維護四字元狀態碼(c/g/h/t/-),對應四個特徵位置,O(1) 更新。
  • 單一 ItemListener 統一處理四個核取方塊,透過 getItemSelectable() 識別來源。
  • 圖片命名規則 geek-XXXX.gif 直接映射狀態碼,無需複雜判斷邏輯。
  • 助記鍵 (setMnemonic) 提升鍵盤操作體驗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved