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

Java Swing 下拉選單 (JComboBox) 實作教學與範例

     編輯:Java 相關知識

Java Swing 下拉選單 (JComboBox) 完整實作指南

在 Java Swing 圖形介面開發中,JComboBox 是最常用的下拉選單元件。它允許使用者從預設清單中選擇單一項目,也可設為可編輯模式讓使用者自行輸入。本文將透過完整範例,示範如何建立下拉選單、新增選項、處理選項變更事件,並搭配圖片切換功能。

核心類別與介面

  • JComboBox:下拉選單元件本體
  • ItemListener:處理選項狀態改變的監聽器介面
  • ItemEvent:包含選項變更事件的詳細資訊
  • ImageIcon:用於載入與顯示圖片

完整程式碼範例

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class ComboBoxDemo extends JApplet implements ItemListener {
    JLabel imageLabel;
    ImageIcon icon1, icon2, icon3;
    
    public void init() {
        Container contentPane = getContentPane();
        contentPane.setLayout(new FlowLayout());
        
        // 建立下拉選單並新增選項
        JComboBox comboBox = new JComboBox<>();
        comboBox.addItem("6");
        comboBox.addItem("7");
        comboBox.addItem("8");
        comboBox.addItemListener(this);  // 註冊事件監聽
        contentPane.add(comboBox);
        
        // 初始顯示預設圖片
        imageLabel = new JLabel(new ImageIcon("images/6.gif"));
        contentPane.add(imageLabel);
    }
    
    // 處理選項變更事件
    public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED) {
            String selected = (String) e.getItem();
            // 根據選項切換圖片
            imageLabel.setIcon(new ImageIcon("images/" + selected + ".gif"));
        }
    }
}

關鍵步驟解析

  1. 繼承 JApplet 並實作 ItemListener:讓主類別能直接處理選單事件
  2. 使用 FlowLayout 佈局:簡單排列下拉選單與圖片標籤
  3. 透過 addItem() 新增選項:字串 "6"、"7"、"8" 將作為選項顯示
  4. 註冊監聽器:comboBox.addItemListener(this) 將事件導向本類別
  5. 在 itemStateChanged() 中處理邏輯:取得選中項目並動態更新圖片

進階應用提示

  • 若需支援圖片與文字並列,可使用自訂 ListCellRenderer
  • 大量資料時建議使用 DefaultComboBoxModel 管理模型
  • 設定 setEditable(true) 可允許使用者自行輸入文字
  • 透過 getSelectedIndex() 取得索引值,getSelectedItem() 取得物件

常見問題與解決

Q:圖片無法顯示怎麼辦?
A:確認圖片路徑正確,建議將圖片放在專案的 resources 目錄,使用 getClass().getResource() 載入,避免絕對路徑問題。

Q:如何在選單中顯示圖示?
A:實作 ListCellRenderer 介面,在 getListCellRendererComponent() 中回傳包含圖示的 JLabel。


掌握 JComboBox 基礎操作後,即可輕鬆建立互動式下拉選單,搭配事件處理實現動態介面更新,是 Swing 開發的必備技能。

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